请看下面这段代码:
srand(localtime);
for (my $ik = 0; $ik < 3; $ik += 1)
{
print int(rand(10)),"\n";
sleep(1);
}
我多次调用上面的代码,中间有足够的时间(5-10秒),但输出序列仍然相同。
由于我已经为localtime
每次调用设置了种子,因此必须使用不同的种子,并且可能会生成不同的三个数字序列,因为时间间隔。为什么我一次又一次得到相同的序列。
注意:代码不在循环中,它在一个被多次执行的 Perl 文件中。
文档说,如果多个实例在相同的“秒”中运行导致相同的种子,则该种子会失败 - 但情况并非如此。
编辑:: @simbabque 的解决方案确实有帮助,但没有获得预期的随机性。看看我对下面上述解决方案的评论。