gpt4 book ai didi

php - mt_rand() 和 rand() 的区别

转载 作者:IT王子 更新时间:2023-10-29 01:09:51 24 4
gpt4 key购买 nike

使用 mt_rand($min, $max)rand($min, $max) 关于速度有什么区别?

最佳答案

更新

从 PHP 7.1 开始,mt_rand 完全取代了 randrand 成为了 mt_rand 的别名。下面的回答主要针对旧版本这两个函数的区别,以及引入mt_rand的原因。


速度并不是引入 mt_rand 的原因!

rand 函数早在 mt_rand 之前就已存在,但它存在严重缺陷。 PRNG 必须获得一些熵,它从中生成一系列随机数。如果您打印出由 rand() 生成的十个数字的列表,如下所示:

for ($i=0;$i<10;++$i)
echo rand(), PHP_EOL;

输出可用于计算出 rand 种子是什么,您可以使用它预测下一个随机数。有一些工具可以做到这一点,所以谷歌一下并测试一下。

rand 也存在一个问题,即相对快速地显示其随机数中的模式 as demonstrated here .一个问题 mt_rand 似乎也解决得更好。

mt_rand 使用更好的随机化算法 (Mersenne Twist),在确定种子之前需要知道更多的随机数,并且速度更快。 这并不意味着 mt_rand 根据定义比 rand 更快,这仅意味着生成的数字更快,并且似乎对函数的性能没有真正的影响,正如这里的其他答案所证明的那样。
无论哪种方式,看看the mt_srandthe srand docs .我相信它们会包含更多信息

如果 mt_rand 的算法转化为性能的提高,那么这对您来说非常好,但这是一个快乐的巧合。长话短说:

mt_rand的引入是为了修复rand存在的问题!

关于php - mt_rand() 和 rand() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28760650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com