gpt4 book ai didi

c++ - rand() 总是在每次运行时输出相同的数字

转载 作者:行者123 更新时间:2023-11-28 07:10:39 24 4
gpt4 key购买 nike

我在 Visual Studio 2010 上使用 C++。问题是我尝试生成随机数数组,但每次运行的结果始终相同。例如:

Run 1:
[0 20103 43281 37162 101 299]
Stop
Run 2:
[0 20103 43281 37162 101 299]
Stop
...

因此,我的代码为数组生成了随机值,但每次运行代码时它们始终是相同的值(即使我清理了构建)。我真的需要为每次运行生成随机值。

下面是一些示例代码,完整的代码充满了简单的操作:

...
srand(time(NULL));
for (int i = 0; i < 31; i++){
x[i] = x[i] + rand();
}

有什么想法吗?

请注意 srand(time(NULL)); 行的存在。它已经在代码中,但输出仍然不正确。

最佳答案

Please, note the presence of the srand(time(NULL)); line. It's already on the code, still the output is not fine.

播种准备一个新的伪随机序列; rand 调用让您沿着该序列前进。每次使用相同的参数调用 seed 时,都会再次启动相同的序列。

由于您的种子参数每秒仅更改一次,如果您每秒多次运行您的程序,您将看到相同的伪随机序列。

我建议使用更多的熵来播种,尽管如何做到这一点在很大程度上取决于平台。在 Linux 上我喜欢写 srand(time(NULL) ^ getpid())

还请记住在您的程序中只播种一次(看起来您做对了)。

关于c++ - rand() 总是在每次运行时输出相同的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21020654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com