ホームページ  >  記事  >  バックエンド開発  >  PHP乱数コード_PHPチュートリアル

PHP乱数コード_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:22:22916ブラウズ

php 乱数コード

今日、友人が Agni PHP の乱数の問題について質問しました。時間の都合上、Agni が提供する PHP マニュアルを参照してください。書くのが面倒なので、インターネットでいくつかの例を見つけてまとめました。質問がある場合は、以下に質問してください。

//シードユーザー定義関数はシードとしてマイクロ秒を使用します

関数seed()

{

list($msec, $sec) =explode(' ', microtime());

return (float) $sec;

}

//乱数生成器のシードを播種し、srand関数を使用してシード関数の戻り結果を呼び出します

srand(seed());

//生成した乱数を出力します、乱数の範囲は10~100です

エコーランド(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);

$rand_number= rand();

microtime() は現在のミリ秒とタイムスタンプの 2 つの値を返します。乱数を抽出したい場合、(double)microtime() は現在のミリ秒の値のみを返します。

Microtime()は秒単位のミリ秒なので、値はすべて1000000を掛けて整数に変換します。

;彼らのワークフローは次のとおりです:

(1): まず、srand(); に unsigned_int 型の値である「シード」を提供します。

(2):_次に、rand()を呼び出します。これは、srand()に提供された値に基づいて乱数(0〜32767の範囲)を返します

(3): rand() を必要なだけ呼び出して、新しい乱数を継続的に取得します。

(4): rand() をさらに「ランダム化」するために、いつでも新しい「シード」を srand() に提供できます

結果を出力します。

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