今日、友人が Agni PHP の乱数の問題について質問しました。これは、Agni が提供する PHP マニュアルを参照してください。インターネット上でいくつかの例を見つけました。ご質問があれば、以下に質問してください。
//seed ユーザー定義関数はシードとしてマイクロ秒を使用します
function seed()
{
list($msec, $sec) =explode(' ', microtime());
return (float); $sec;
}
//乱数生成器のシードを播種し、srand 関数を使用してシード関数の戻り結果を呼び出します
srand(seed());
//生成された乱数、乱数の範囲を出力します。数値は 10-100
echo rand(10,100);
?> 上のものと下のものは異なりますか? どちらも 10 から 100 までの数値をランダムに出力します。ははは。
エコーランド(10,100)>
mt_rand(10,100);
srand はシードです。設定されていない場合、デフォルトは 1 です。
シードを設定しないでください。または、固定シードを設定して、rand を実行します
その後、ブラウザを閉じて再度開き、rand を再度実行します
結果は常に同じであることがわかります
ただし、乱数をシードとして使用すると、各実行の結果は次のようになります。ほぼランダムになります
最初に rand() 関数について話しましょう。 rand([int min], [int max]) この関数は、最小値と最大値の間の乱数を受け取ります。乱数の最大値と最小値の範囲が指定されていない場合、この関数は 0 から RAND_MAX までの乱数を自動的に選択します。
srand((double)microtime()*1000000);
microtime() は 2 つの値を返します: 現在のミリ秒乱数を抽出したい場合、(double)microtime() は現在のミリ秒値のみを返します。
microtime() は秒単位のミリ秒なので、値はすべて 1000000 を掛けて整数に変換します。
;そのワークフローは次のとおりです:
(1): まず、unsigned_int 型の値である「シード」を srand(); に提供します。
(2): 次に、rand() を呼び出します。これは、srand() に提供された値 (0 から 32767 の範囲) に基づいて乱数を返します。
(4): 新しい「シード」をいつでも srand() に提供でき、それによって rand() の
出力結果をさらに「ランダム化」します。
www.bkjia.com