Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mt_srand()和srand()-是否需要将种子重置为随机数?_Php_C - Fatal编程技术网

Php mt_srand()和srand()-是否需要将种子重置为随机数?

Php mt_srand()和srand()-是否需要将种子重置为随机数?,php,c,Php,C,我的代码中有一个函数,它使用一个种子来获得基于随机数种子集的可预测结果 $seed = 1234; mt_srand($seed); echo mt_rand(0,10); echo mt_rand(0,10); echo mt_rand(0,10); echo mt_rand(0,10); 是否有必要在我的函数结束时调用mt_srand,以便在处理完后将其重置为随机种子?是。mt_rand的状态是全局的-如果函数将其设置为固定值,则在函数退出后将保持该状态。虽然调用mt_srand并不理想

我的代码中有一个函数,它使用一个种子来获得基于随机数种子集的可预测结果

$seed = 1234;
mt_srand($seed);

echo mt_rand(0,10);
echo mt_rand(0,10);
echo mt_rand(0,10);
echo mt_rand(0,10);

是否有必要在我的函数结束时调用mt_srand,以便在处理完后将其重置为随机种子?

是。mt_rand的状态是全局的-如果函数将其设置为固定值,则在函数退出后将保持该状态。虽然调用mt_srand并不理想,因为这会破坏试图设置固定种子的任何其他函数,但还是最好让随机数生成器处于非随机状态。

是的。mt_rand的状态是全局的-如果函数将其设置为固定值,则在函数退出后将保持该状态。虽然调用mt_srand并不理想,因为这会破坏任何其他试图设置固定种子的函数,但还是最好让随机数生成器处于非随机状态。

为什么函数要调用mt_srand?我很好奇是否有更好的方式来处理事情。@Daskwuff这是个好问题。例如,我希望为给定用户生成相同的随机数集,但对于不同的用户仍然是随机/不同的。所以在这种情况下,他们可以使用用户id作为种子。比如,你只需要一些与用户相关联的随机数?你可能想考虑一些像unPcLLLL,Sa1 $盐。如果是,用户id,$salt是一个固定值,您可以使用它来获取这组数字。感谢@Dashwuff的建议。你的函数为什么要调用mt_srand?我很好奇是否有更好的方式来处理事情。@Daskwuff这是个好问题。例如,我希望为给定用户生成相同的随机数集,但对于不同的用户仍然是随机/不同的。所以在这种情况下,他们可以使用用户id作为种子。比如,你只需要一些与用户相关联的随机数?你可能想考虑一些像unPcLLLL,Sa1 $盐。如果是,用户id,$salt是一个固定值,您可以使用它来获取这组数字。感谢@Dashwuff的建议。如果您需要相同的exmp生成的伪随机数集:您有一个测试随机输入的测试用例,但它失败了,因此您修复了mt_rand,因此每次运行都是相同的,你能这样完成吗:在函数的开头调用mt_rand20,在函数的结尾调用mt_rand?如果你需要一组相同的伪随机数生成exmp:你有一个测试用例测试随机输入,但它失败了,所以你修复了mt_rand,所以每次运行都是一样的,你能这样完成吗:在函数的开头调用mt_rand20,在函数的结尾调用mt_rand?