【发布时间】:2012-09-01 10:45:20
【问题描述】:
我在 for 循环中迭代 perl 脚本,并在我的脚本中使用 srand(time¦$$) 来播种随机数。
在我的输出中,如果我一次只做一个而不是使用 for 循环,当我得到单个结果时,我会得到重复的结果。这是因为srand 行吗?有什么建议吗?
谢谢!
【问题讨论】:
-
srand应该在每个程序中调用 一次,除非您自愿想要多次获得相同的随机数。 -
我不想得到同样的随机数。我将所有代码都卡在一个 for 循环中,它可以工作,但我在输出中得到连续重复
-
然后确保你只调用
srand一次(或者实际上根本不调用)。将该调用移出循环。 -
如果您每次都想要不同的序列,则根本不应该使用
srand。它旨在提供随机但可重现的数据,以便可以重复运行。 Perl 内部提供了一个非常有效的随机种子,只要你不自己调用srand。 -
@Mat,我敢说,你永远不应该调用
srand,但如果你这样做,每个进程不应超过一个。跨度>