【问题标题】:Random function outputs same number.随机函数输出相同的数字。
【发布时间】:2017-06-15 17:05:07
【问题描述】:

我正在使用以下代码生成随机数:

$random = mt_rand(1000000000,10000000000);

它在本地主机上完美运行,但在服务器上它输出完全相同的数字。我能做些什么来防止重复的结果吗? 其实我试过用

mt_srand(); 

但我不知道如何使用它。

【问题讨论】:

  • 如果有疑问如何使用它。 RTFM

标签: 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 并选择一个种子(如秒、毫秒或滴答声等),它会因调用而异。

    【讨论】:

      猜你喜欢
      • 2015-03-08
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      • 2020-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多