PHP在Windows上返回最大可能的随机值32767?
什么是Windows上的约束?
echo getrandmax(); //32767
Run Code Online (Sandbox Code Playgroud)
Pas*_*TIN 10
根据PHP源代码,getrandmax()定义为:
PHP_FUNCTION(getrandmax)
{
if (zend_parse_parameters_none() == FAILURE) {
return;
}
RETURN_LONG(PHP_RAND_MAX);
}
Run Code Online (Sandbox Code Playgroud)
并PHP_RAND_MAX定义为:
#define PHP_RAND_MAX RAND_MAX
Run Code Online (Sandbox Code Playgroud)
RAND_MAX 本身被定义为:
/* System Rand functions */
#ifndef RAND_MAX
#define RAND_MAX (1<<15)
#endif
Run Code Online (Sandbox Code Playgroud)
所以,如果有一个RAND_MAX定义,它被使用...
...而且,在使用Visual Studio的Windows上,确实有一个RAND_MAX定义的(引用):
常量
RAND_MAX是rand函数可以返回的最大值.RAND_MAX被定义为值0x7fff.
因此,基本上,getrandmax()返回32767是因为它是在Windows上定义的 - 而PHP通常使用底层系统导出的内容.