为什么rand()尽管在程序的开头设置了一次srand(),但在循环中会产生不同的数字? 我AM制作了一个程序,该程序产生不同的随机数10次。这是代码: #include

问题描述 投票:0回答:1
它运行良好。但是,我不明白为什么。我做了一些研究,并根据我的理解:

rand()

总是播种到1,因此产生相同的数字

    为了产生不同的结果,我必须通过这样做以不同的东西(例如时间)来播种:
  • srand(time(0))
    
    
  • 我担心的是:如果我将种子设置在循环之外,那不应该产生相同的数字吗?因为基于我所知道的,
    rand()
    给出了“假”的伪随机数,我知道它遵循某种可预测的算法,这意味着在循环的每一个迭代中,它都使用
  • same
sameseed set在循环外应该给我相同的数字。为什么我会得到不同的数字?

	
rand()

正在播种随机发生器。 这意味着,对于每种种子,都会有生成器可以产生的伪随机值的序序(不是单个值)。 每次呼叫
c++ random random-seed srand
1个回答
0
投票
srand()

将返回序列中的下一个值。

文献
明确提到:
从本质上讲,伪随机数生成器仅应为 在程序开始时,在打电话给兰德()的任何呼叫之前就播种了一次。 它不应反复播种,也不应该每次您希望 生成一批新的伪随机数。
因此,打电话rand()
不仅在您的情况下还可以,而且实际上是推荐的方式。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.