【问题标题】:Random function outputs same number.随机函数输出相同的数字。
【发布时间】:2017-06-15 17:05:07
【问题描述】:
我正在使用以下代码生成随机数:
$random = mt_rand(1000000000,10000000000);
它在本地主机上完美运行,但在服务器上它输出完全相同的数字。我能做些什么来防止重复的结果吗?
其实我试过用
mt_srand();
但我不知道如何使用它。
【问题讨论】:
标签:
php
random
numbers
duplicates
output
【解决方案1】:
如果您使用的是 PHP >= 7,那么您可以使用 random_int() 生成一个随机整数,它也接受与 mt_rand 相同的参数。
如果您想使用 mt_srand,那么您可以使用 Unix 时间戳(以毫秒为单位)为其播种,然后运行您的 mt_rand() 函数。例如。
mt_srand(microtome());
$rand = mt_rand(1, 100000);
【解决方案2】:
“随机”数字并不是真正随机的,它们是伪随机的。寻找一条指令,用不同的值“播种”生成器,比如基于时间的东西,每次都得到不同的值。
文档说:“许多旧 libcs 的随机数生成器具有可疑或未知的特性,并且速度很慢。mt_rand() 函数是旧 rand() 的替代品。它使用一个已知的随机数生成器使用 » Mersenne Twister 的特性,它产生随机数的速度比 libc rand() 提供的平均速度快四倍。"
阅读manual on mt_srand 并选择一个种子(如秒、毫秒或滴答声等),它会因调用而异。