ホームページ  >  記事  >  バックエンド開発  >  PHPの組み込み関数を使って乱数を生成する方法のまとめ

PHPの組み込み関数を使って乱数を生成する方法のまとめ

藏色散人
藏色散人転載
2019-01-17 16:43:194921ブラウズ


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() によって生成される乱数はすべて整数であり、英語の文字は含まれません。

3. uniqid 関数

uniqid() 関数は、マイクロ秒単位の現在時刻に基づいて一意の ID を生成します。デフォルトで生成される ID の長さは 13 桁または 23 桁で、英語の文字と数字で構成されます。 uniqid() 関数には、次の形式の 2 つのパラメータがあります:

uniqid(prefix,more_entropy)

そのうち、

prefix: 生成された ID のプレフィックス

more_entropy: 追加するかどうか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の組み込み関数を使って乱数を生成する方法のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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