我知道鼓励使用mt_rand()
而不是rand()
,因为它使用Mersenne Twister而不是PRNG rand()
使用的任何内容,但这里似乎永远不会考虑因素:用户活性。
事实上,用户的行为可以被认为是非常随机的。例如,在任何给定时刻,用户可能有4%的可能触发一个功能的rand()
呼叫,用户触发三个rand()
呼叫的概率为8%,{{1 ,20%的用户触发两次shuffle()
次呼叫,每次用户加载页面时,PRNG都会前进一次。
毕竟,不是NPC运动是什么让神奇宝贝游戏中的RNG滥用如此令人沮丧?
因此,请注意,虽然rand()
确实有其模式,但用户活动的随机性和rand()
的使用的多样性足以使rand()
成为rand()
缺点无关紧要?从绝对意义上讲,mt_rand()
是“更随机的”。但这与人体元素的熵相比如何?
答案 0 :(得分:4)
如果你假设rand()的调用是由人类用户随机生成的,那么我猜你的逻辑是正确的。
但是想象一个机器人每隔X秒发送相同的请求(夜间不被人类呼叫中断)或者运行一段时间的简单脚本并逐个运行rand()。那么你就不能完全依赖随机性。
来自php.net的评论:
请注意,自动播种似乎是用电流完成的 秒数表示您可以获得相同的结果 在快速服务器上运行。要么自己调用srand()更多 经常更换种子或使用看似不合适的mt_rand() 遇到了这个问题。
答案 1 :(得分:0)
但这与人体元素的熵相比如何?
我想象这个场景:
由于伪随机函数,用户XXX更可能并且用户YYY总是具有相同的距离。因为伪随机问题之一,就是在足够数量的循环后,一个区域可以“更加”可预测。