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通常使用底层系统导出的内容.