ホームページ  >  記事  >  バックエンド開発  >  php rand() 関数と mt_rand() 関数の違いの比較

php rand() 関数と mt_rand() 関数の違いの比較

怪我咯
怪我咯オリジナル
2017-07-07 09:58:332304ブラウズ

mt_rand() は rand() より 4 倍高速です。多くの古い libc 乱数生成器には不確実で未知の特性があり、非常に遅いです。 PHP の rand() 関数 は、デフォルトで libc 乱数ジェネレーターを使用します。 mt_rand() 関数は非公式にこれを置き換えるために使用されます。

PHP 関数 rand と mt_rand

mt_rand() は rand() より 4 倍高速です

古い libc 乱数ジェネレーターの多くは、いくつかの不確実で未知の特性を備えており、非常に遅いです。 PHP の rand() 関数は、デフォルトで libc 乱数ジェネレーターを使用します。 mt_rand() 関数は非公式にこれを置き換えるために使用されます。この関数は、乱数生成器として知られているメルセンヌ ツイスターの機能を使用しており、mt_rand() は libc が提供する rand() よりも平均して 4 倍高速に乱数値を生成できます。

mt_rand()はrand()より4倍高速です

mt_rand — より良い乱数を生成します

(PHP 3 >= 3.0.6, PHP 4, PHP 5)

int mt_rand ( [int min, int max ] )

多くの古い libc 乱数生成器には、不確実で未知の特性があり、非常に遅いです。 PHP の rand() 関数は、デフォルトで libc 乱数ジェネレーターを使用します。 mt_rand() 関数は非公式にこれを置き換えるために使用されます。この関数は、メルセンヌ ツイスターの既知のプロパティを乱数ジェネレーターとして使用し、libc が提供する rand() よりも平均して 4 倍高速に乱数値を生成できます。

オプションのパラメータ min と max が指定されていない場合、 mt_rand() は

0 から RAND_MAX までの擬似乱数を返します。

たとえば、5から15まで(両端を含む)の乱数が必要な場合は、mt_rand(5, 15)を使用します。

注: PHP 4.2.0 以降、乱数generatorをシードするために srand() または mt_srand() 関数を使用する必要はなくなり、自動的に完了するようになりました

rand — ランダムな整数を生成します

(PHP 3, PHP 4, PHP 5)

int rand ( [int min, int max] )

オプションのパラメータ min と max が指定されていない場合、 rand( ) 0 から RAND_MAX までの擬似乱数の整数を返します。たとえば、5 から 15 までの範囲の乱数が必要な場合は、rand(5, 15) を使用します。

注: 一部のプラットフォーム (Windows など) では、RAND_MAX は 32768 のみです。 32768 より大きい範囲が必要な場合は、min パラメーターと max パラメーターを指定して RAND_MAX より大きい数値を生成するか、代わりに mt_rand() の使用を検討してください。

注: PHP 4.2.0 以降、srand() または mt_srand() 関数を使用して乱数ジェネレーターにシードを与える必要はなくなり、自動的に行われるようになりました。

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) です。


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

コードは次のとおりです:

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

出力は同様です:

3150906288
513289678
35

以上がphp rand() 関数と mt_rand() 関数の違いの比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。