ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルに基づいて乱数を深く理解する

PHP_PHP チュートリアルに基づいて乱数を深く理解する

WBOY
WBOYオリジナル
2016-07-21 15:09:151305ブラウズ

php mt_srand より良い乱数ジェネレーターを蒔きます
mt_srand
(PHP 3 >= 3.0.6, PHP 4, PHP 5)
mt_srand -- より良い乱数ジェネレーターを蒔きますシード
説明書

コードをコピーします コードは次のとおりです:

void mt_srand (int seed)

seed を使用して乱数ジェネレーターをシードします。 PHP バージョン 4.2.0 以降、シード パラメータはオプションになり、空の場合は定数に設定されます。
例 1. mt_srand() の例
コードをコピー コードは次のとおりです:

Actipro CodeHighlighter (フリーウェア) によって生成されたコードの強調表示http://www.CodeHighlighter.com/-->< ?php
// マイクロ秒でシード
function make_seed()
{
list($usec, $sec) =explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());
$randval = mt_rand();
?>

注: PHP 4.2.0 以降、srand() を使用する必要はなくなりました。または mt_srand() 関数 乱数ジェネレーターのシード処理が自動的に行われるようになりました。
mt_rand()、mt_getrandmax()、および srand() を参照してください。

PHP mt_rand() 関数
定義と使用法
mt_rand() は、メルセンヌ ツイスター アルゴリズムを使用してランダムな整数を返します。
構文
コードをコピーコードは次のとおりです:

mt_rand(min,max)

説明
オプションのパラメータminとmaxが指定されていない場合、mt_rand()は次の間を返します。擬似乱数の0とRAND_MAX。たとえば、5 から 15 までの範囲の乱数が必要な場合は、mt_rand(5, 15) を使用します。
古い libc 乱数ジェネレーターの多くには、不確実で未知の特性があり、速度が遅いです。 PHP の rand() 関数は、デフォルトで libc 乱数ジェネレーターを使用します。 mt_rand() 関数は非公式にこれを置き換えるために使用されます。この関数は、乱数生成器としてメルセンヌ ツイスターの既知の機能を使用しており、libc が提供する rand() よりも平均して 4 倍高速に乱数値を生成できます。
ヒントとメモ
注: PHP 4.2.0 以降、srand() 関数または mt_srand() 関数を使用して乱数ジェネレータにシードを与える必要はなくなり、自動的に行われるようになりました。
注: 3.0.7 より前のバージョンでは、最大は範囲を意味します。これらのバージョンで上記の例と同じ 5 から 15 までの乱数を取得するには、短い例は mt_rand (5, 11) です。

この例では、いくつかの乱数を返します:
コードをコピー コードは次のとおりです:

echo(mt_rand()) ;
echo(mt_rand(10,100));
?>

出力は次のようになります:
3150906288
513289678
35
注: 上記の関数で与えられたランダムな整数、数字以外の文字はそうではない他の文字を生成したい場合は、次のようにメソッドをカスタマイズする必要があります:
コードをコピーします コードは次のとおりです:

/*
* $length:乱数文字列の長さ
* $type: 生成される乱数の種類
* */
functionrandom($length, $type = "") {
$chars = !$type ? "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz" : "0123456789abcdef ";
$max = strlen( $chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i $string . = $chars[mt_rand(0, $max)];
}
return $string;
}
$var=random(32,'haha');
echo($var);
?>

出力:
fe61e294e5f46437cb3a92b92643ead6

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327348.html技術記事 php mt_srand より良い乱数ジェネレーターのシードを蒔く mt_srand (PHP 3 = 3.0.6, PHP 4, PHP 5) mt_srand -- より良い乱数ジェネレーターのシードを蒔く 説明 コードをコピー コード...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。