機能についてmt_rand()
...
http://php.net/manual/en/function.mt-srand.phpから
PHP 4.2.0 では、乱数ジェネレーターに srand() または mt_srand() をシードする必要はありません。これは自動的に行われるようになったためです。
(PHP 5.2.1 の場合) PHP の Mersenne Twister 実装は、Richard Wagner による新しいシード アルゴリズムを使用するようになりました。同一のシードは、以前のバージョンと同じ値のシーケンスを生成しなくなりました。この動作が再度変更されることはないと予想されますが、それにもかかわらず、それに依存することは安全ではないと考えられています。
「 Mersenne Twister(MT)」疑似乱数生成アルゴリズム (およびC、C++、C# での実装)の説明を含むリンクは次のとおりです。
ここでは、PHP 5 でのこの関数の実装を見つけることができます。
そして、php_rand.h
私はこれを見つけました:
#ifdef PHP_WIN32
#define GENERATE_SEED() (((long) (time(0) * GetCurrentProcessId())) ^ ((long) (1000000.0 * php_combined_lcg(TSRMLS_C))))
#else
#define GENERATE_SEED() (((long) (time(0) * getpid())) ^ ((long) (1000000.0 * php_combined_lcg(TSRMLS_C))))
#endif
これで、PHP のランダム関数が関数に依存していることがわかりtime
ます...