2012-02-12 6 views
6

PHPはウィンドウ上で最大のランダム値32767を返しますか?getrandmax()理由32767ウィンドウの制限?

ウィンドウの制約とは何ですか?

echo getrandmax(); //32767 
+2

randは、arkに戻ってくるシステムのrand関数を呼び出すか、少なくともほとんどのミニコンピュータが16ビットの語長を持つときに呼び出します。より良い乱数ジェネレータが必要な場合は、Mersenne Twisterを使用してください:mt_rand()。 mt_getrandmax()は2^31-1です。 – TerryE

+1

それは可能な限り大きな種です。 1から250000、または1から10億の間に32767個の異なるランダムな値しかありません。これはむしろ愚かです。 (それはメルセンヌ・ツイスターが来るところです!) – Westie

答えて

9

PHPソースコードによると、getrandmax()を次のように定義される。

/* System Rand functions */ 
#ifndef RAND_MAX 
#define RAND_MAX (1<<15) 
#endif 
:自体は次のように定義される

#define PHP_RAND_MAX RAND_MAX 

RAND_MAX

PHP_FUNCTION(getrandmax) 
{ 
    if (zend_parse_parameters_none() == FAILURE) { 
     return; 
    } 

    RETURN_LONG(PHP_RAND_MAX); 
} 

そしてPHP_RAND_MAXは以下のように定義されます 定義さRAND_MAXがあるのであれば、それが使用さ

...


...そして、Visual StudioにWindows上で、実際にRAND_MAX定義さ(引用)があります:

定数RAND_MAXは、 rand関数によって返される最大値です。 RAND_MAXは、値0x7fffと定義されています。だから、

、基本的には、getrandmax()戻り32767それは、それがWindows上で定義されていますどのようにだから - とPHPは、多くの場合、どのような基盤となるシステムの輸出を使用しています。

+0

私は時間をずらしています。私はちょうどソースを見ていた –