2017-06-15 8 views
0

ランダム関数は同じ数を出力します。私は乱数を生成するには、次のコードを使用しています

$random = mt_rand(1000000000,10000000000); 

これは、ローカルホスト上で完璧に動作しますが、サーバー上のそれはまったく同じ番号を出力します。重複した結果を防ぐために私ができることはありますか? は、実際に私は

mt_srand(); 

を使用しようとしましたが、私はそれを使用する方法を知りませんでした。

+2

使用方法が不明な場合。 [RTFM](http://php.net/manual/en/function.mt-srand.php) – RiggsFolly

答えて

0

PHP> = 7の場合、random_int()を使用してランダムな整数を生成できます。これは、mt_randと同じ引数も受け入れます。

mt_srandを使用する場合は、Unixタイムスタンプ(ミリ秒単位)を設定してmt_rand()関数を実行します。例えば。

mt_srand(microtome()); 
$rand = mt_rand(1, 100000); 
0

「ランダム」数は実際にランダムではなく、擬似ランダムです。毎回異なる値を得るために、時間ベースのようなさまざまな値でジェネレータを「シード」する命令を探します。

「古いlibcの乱数ジェネレータの多くは、あいまいまたは不明な特徴を持ち、遅いです。mt_rand()関数は、古いrand()のドロップイン置換です。 »Mersenne Twisterを使用した既知の特性。平均的なlibc rand()が提供するものより4倍の速さで乱数を生成します。

manual on mt_srandを読み、起動から呼び出しまでのシード(秒またはミリ秒またはティックなど)を選択します。

関連する問題