ホームページ >バックエンド開発 >PHPの問題 >PHPで乱数を生成するにはどのような方法がありますか?

PHPで乱数を生成するにはどのような方法がありますか?

王林
王林転載
2021-03-03 17:52:1119576ブラウズ

PHPで乱数を生成するにはどのような方法がありますか?

PHP が内部で既製の乱数メソッドを提供しているため、PHP が乱数を生成する方法は非常に簡単です。したがって、追加の構成を実行する必要はなく、内部メソッドを呼び出すだけで済みます。

php の乱数関数は次のとおりです:

1. rand 関数

rand() 関数はパラメータを追加せずにランダムな整数を生成できます。乱数の範囲を設定したい場合は、関数内でminとmaxの値を設定できます。乱数シードを生成する必要がある場合は、srand 関数構成を使用します。

echo rand();                      // 生成 0~RAND_MAX 之间的随机数,Windows 系统下 RAND_MAX 的值为 32767,RAND_MAX 可以用函数 getrandmax() 获得
echo rand(1000000, 9999999);      // 生成 1000000~9999999 之间的随机数

$seed = time();                   // 使用时间作为种子源
srand($seed);                     // 播下随机数发生器种子
echo rand();                      // 根据种子生成 0~32768 之间的随机数。如果 $seed 值固定,则生成的随机数也不变
echo rand(1000000, 9999999);      // 根据种子生成 1000000~9999999 之间的随机数。如果 $seed 值固定,则生成的随机数也不变

2. mt_rand 関数

mt_rand() は、メルセンヌ ツイスター アルゴリズムを使用してランダムな整数を返します。 rand() 関数との主な違いは次のとおりです。

mt_rand()乱数を生成します。数値は libc が提供する rand() よりも平均して 4 倍高速であり、シード関数は srand() の代わりに mt_srand() を使用します。この違いはありますが、使用方法は次のように似ています。

echo mt_rand();                   // 生成 0~RAND_MAX 之间的随机数,Windows 系统下 RAND_MAX 的值为 2147483647(与rand()中的 RAND_MAX 不同),RAND_MAX 可以用函数 mt_getrandmax() 获得
echo mt_rand(1000000, 9999999);   // 生成 1000000~9999999 之间的随机数,不受系统 RAND_MAX 影响

$seed = time();                   // 使用时间作为种子源
mt_srand($seed);                  // 播下随机数发生器种子
echo rand();                      // 根据种子生成 0~RAND_MAX 之间的随机数,如果 $seed 值固定,则生成的随机数也不变
echo rand(1000000, 9999999);      // 根据种子生成 1000000~9999999 之间的随机数,如果 $seed 值固定,则生成的随机数也不变

注: rand() と mt_rand() によって生成される乱数はすべて整数であり、英語の文字は含まれません。

(関連する推奨事項: php チュートリアル )

3. uniqid 関数

uniqid() 関数は一意の ID を生成します。デフォルトで生成される ID の長さは 13 桁または 23 桁で、英語の文字と数字で構成されます。 uniqid() 関数には 2 つのパラメータがあり、形式は次のとおりです:

uniqid(prefix,more_entropy)

そのうち、

  • prefix: IDのPrefixを生成

  • more_entropy: エントロピーを追加するかどうか

次の手順、

echo uniqid();                    // 生成13位字符串,如:55f540e273e93
echo uniqid('one.');              // 生成前缀为one.加13位随机字符的字符串,如:one.55f540e273e93
echo uniqid('two.', true);        // 生成前缀为two.加23位随机字符的字符串(加了熵),如:two.55f540e273e932.77804707,比上面的多了 10 位,即多了:2.77804707

説明: システム上の都合により、この機能で生成されるIDが最適ではない場合があります。完全に一意の ID を生成するには、md5() 関数を使用します。

学習ビデオ共有: php ビデオ チュートリアル

元のリンク: https://www.awaimai.com/216.html

以上がPHPで乱数を生成するにはどのような方法がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。