gpt4 book ai didi

PHP:对于提供的给定种子,rand() 伪生成的数字是否始终相同?

转载 作者:行者123 更新时间:2023-12-01 13:48:14 24 4
gpt4 key购买 nike

我正在使用以下代码生成一系列伪随机数:

$seed = 1;
srand( $seed );
for($i=0; $i<10; $i++)
{
echo rand(0,100) . "\n";
}
exit(0);

以下代码始终输出(在我的机器上)
84
39
79
[....]
77
28
55

我可以依赖上面代码的输出总是相同的事实吗?

如果没有,什么可以使它改变?

例如,不同版本的 PHP 会给出不同的结果吗?

或者 PHP 运行在不同的操作系统上?

最佳答案

如果我在 Windows 上运行此代码,我会得到 99、38、79、21、75、91、42、36、47、67 的序列。它与我的 Windows 机器上的所有版本(32 位或 64 位)一致.

而如果我在 Linux 机器上运行它,无论 PHP 是什么版本,我始终会得到 84、39、79、80、92、19、33、77、28、55 的序列

所以它在操作系统之间不一致

但是,如果我使用 mt_srand()mt_rand()而不是 srand()rand()然后我确实在 Windows/Linux 和从 5.2 到 7.0 的不同版本的 PHP 之间获得了一致性

$seed = 1;
mt_srand( $seed );
for($i=0; $i<10; $i++)
{
echo mt_rand(0,100) . "\n";
}
exit(0);

始终给出 58, 0, 72, 94, 100, 87, 70, 100, 86, 76

关于PHP:对于提供的给定种子,rand() 伪生成的数字是否始终相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34106835/

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