c++ - 在 C++ 中生成相同的随机数

标签 c++ c random

我已经为此苦苦思索了半个小时,但不知道哪里出了问题。 我正在尝试生成 10 个随机数的列表,1-100。但是当我运行它时,它们都得出相同的数字。这是非常令人沮丧的!我还以为是因为这个数字还保存在RAM中,但是把随机数和变量重新随机化了3次之后,出来的还是一样的数字。我做错了什么?

代码:

main() {
    int i;
    int randnum;
    srand(time(NULL));
    randnum = rand() % 2;
    for (i = 0; i < 10; i++) {
        srand(time(NULL));
        randnum = rand() % 100 + 1;
        srand(time(NULL));
        rand();
        list[i] = randnum;
        srand(time(NULL));
        randnum = rand() % 100 + 1;
        srand(time(NULL));
        rand();
    }
    srand(time(NULL));
    randnum = rand() % 100 + 1;
}

最佳答案

不要多次调用 srand()。此代码的执行时间可能不到一秒,因此每次调用 srand(time(NULL)) 时,您只需将伪随机数生成器重置为相同的种子,所以你所有的数字都是一样的。

关于c++ - 在 C++ 中生成相同的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18949163/

相关文章:

c++ - 我找不到程序在第一次用户输入后立即退出的原因

c++ - 用strtok拼接cstrings,只适用于循环的第一次执行

java - 在种子中创造更高水平熵的方法

javascript - 在随机位置生成方 block

java - 从给定列表中选择随机字符串

c++ - 如何自动包含目录中的所有标题

c++ - Qt和错误处理策略

c++ - boost::变体用法

C 编程寄存器值?

c - nanosleep 和/dev/rtc 的性能差异