我有一个运行15次的for循环,每次迭代都有dh.setDoors()。
setDoors所做的是调用srand(time(0)),然后每当需要一个随机数时,它都会使用,例如,carSetter = rand()%3+1。或者,它可以使用decider = rand()%2+1。
现在,通常decider和carSetter以不同的方式使用,但我怀疑有问题,并让它在每次迭代时输出carSetter和decider。结果是这样的:
Door 1 has car
Decider is 2
Door 1 has car
Decider is 2
Door 1 has car
Decider is 2
Door 1 has car
Decider is 2
Door 1 has car
Decider is 2
etc...当我多次运行它时,值“1”和“2”会发生变化,但在15次运行过程中始终保持不变。
既然循环运行了15次,那么carSetter和decider不应该在每次迭代中打印出不同的随机数吗?
当我没有srand(time(0))时,它会像预期的那样工作,但没有种子集,所以每次都是相同的“随机”数字序列,所以可能是种子有问题?
发布于 2012-02-13 01:55:56
正如Kerrek所说,播种只在程序开始时进行一次。在一次srand之后,你可以任意多次调用rand。
https://stackoverflow.com/questions/9251117
复制相似问题