ホームページ  >  記事  >  バックエンド開発  >  PHP 乱数コード 乱数を生成する PHP メソッド_PHP チュートリアル

PHP 乱数コード 乱数を生成する PHP メソッド_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 14:54:271103ブラウズ

今日、友人が 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() 関数について話しましょう。 rand([int min], [int max]) この関数は、最小値と最大値の間の乱数を受け取ります。乱数の最大値と最小値の範囲が指定されていない場合、この関数は 0 から RAND_MAX までの乱数を自動的に選択します。

しかし、rand() 関数のみを使用する場合、乱数は非常に混沌としたものになります。乱数を取得して新しい乱数シードを構成する前に、毎回 srand() 関数を使用するのが最善です。

次の使用法を説明します (これが、これら 2 つの関数の一般的な使用方法です):

srand((double)microtime()*1000000);

microtime() は 2 つの値を返します: 現在のミリ秒乱数を抽出したい場合、(double)microtime() は現在のミリ秒値のみを返します。
microtime() は秒単位のミリ秒なので、値はすべて 1000000 を掛けて整数に変換します。

;そのワークフローは次のとおりです:
(1): まず、unsigned_int 型の値である「シード」を srand(); に提供します。
(2): 次に、rand() を呼び出します。これは、srand() に提供された値 (0 から 32767 の範囲) に基づいて乱数を返します。

(3): rand() を必要なだけ繰り返し呼び出します。新しい乱数を取得します。

(4): 新しい「シード」をいつでも srand() に提供でき、それによって rand() の
出力結果をさらに「ランダム化」します。



http://www.bkjia.com/PHPjc/364638.html

www.bkjia.com

http://www.bkjia.com/PHPjc/364638.html技術記事今日、友人が PHP の乱数について Agni に質問しました。これは、Agni が提供する PHP マニュアルを参照してください。インターネットに投稿するのが面倒です。 ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。