让我们解释一下我的意思.
前段时间,在用c#编写程序时,我犯了以下错误:
int Randomize()
{
Random r=new Random();
return r.Next(0,10);
}
Run Code Online (Sandbox Code Playgroud)
在c#中,这是一个错误,因为,连续多次调用此函数将返回相同的值.这是因为Random构造函数使用时间种子,并且调用之间的时间差太小(花了我一个小时来找到那个:)).
现在我rand(...)
在php中使用,我需要输出始终不同,即使同时执行2个脚本.
我是否必须做一些事情来获得这个结果,或者它是否设计为以这种方式工作?
小智 9
在rand()
还mt_rand()
调用srand()
和mt_srand()
产生总是随机的结果.但这是php.net上一篇有趣的帖子:
请注意,自动播种似乎是使用当前秒数完成的,这意味着您可以在快速服务器上为多次运行获得相同的结果.要么使用更频繁更改的种子调用srand(),要么使用mt_rand(),这似乎不会遇到问题.
所以,只需srand
更频繁地打电话或mt_rand
.