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 以降、srand() または mt_srand() 関数を使用して乱数ジェネレーターにシードを与える必要はなくなり、自動的に行われるようになりました。
rand — ランダムな整数を生成します
(PHP 3, PHP 4, PHP 5)
int rand ( [int min, int max] )
オプションのパラメータ min と max が指定されていない場合、 rand() は戻ります0 RAND_MAX と 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) です。
例
この例では、いくつかの乱数を返します: