PHPの乱数

WBOY
リリース: 2016-06-23 14:35:11
オリジナル
1158 人が閲覧しました

php mt_srand より良い乱数ジェネレーターのシードを蒔く


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

void mt_srand ( int シード)

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

code

// マイクロ秒でシード
function make_seed()
{
list ( $usec , $sec ) =explode ( ' ' , microtime () ) ;
return


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

PHP mt_rand() 関数


定義と使用法

mt_rand() は、メルセンヌ ツイスター アルゴリズムを使用してランダムな整数を返します。

構文

              <p class="sycode">                  <p class="sycode">      mt_rand ( min , max )     </p>              </p><p> </p>
ログイン後にコピー
説明
オプションのパラメーター 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) です。

この例では、いくつかの乱数を返します:

              <p class="sycode">                  <p class="sycode">      <? php echo ( mt_rand ()); echo ( mt_rand ()); echo ( mt_rand ( 10 , 100 )); ?>     </p>              </p><p> </p>
ログイン後にコピー

出力は次のようになります:

              <p class="sycode">                  <p class="sycode">      3150906288 513289678 35     </p>              </p><p> </p><p> </p><p></p><p> </p>
ログイン後にコピー

注: 上記の関数で与えられるランダムな整数には、数字以外の文字は含まれません。他の文字を生成したい場合は、次のようにメソッドをカスタマイズする必要があります:

Code

/*

* $length: 乱数文字列の長さ
* $type: Generate乱数 Type

* */

functionrandom( $length , $type = "" ) {

$chars = ! $type ? " ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz " : " 012 3456789abcdef " ; strlen ( $chars ) - 1 ;

" mt_srand (( double ) microtime () * 1000000 );
for ( $i = 0 ; $i $string .= $chars [ mt_rand ( 0 , $max )];
}
6437cb3a92b92643ead6






関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート