c++ - 在 C++ 中使用 rand() 函数的正确方法是什么?

标签 c++ random

我正在做一个书本练习,说要编写一个生成伪随机数的程序。我从简单的开始。

#include "std_lib_facilities.h"

int randint()
{
    int random = 0;
    random = rand();
    return random;
}

int main()
{
    char input = 0;
    cout << "Press any character and enter to generate a random number." << endl;
    while (cin >> input)
    cout << randint() << endl;
    keep_window_open();
}

我注意到每次程序运行时,都会有相同的“随机”输出。因此,我研究了随机数生成器并决定尝试通过首先将其包含在 randint() 中来进行播种。

    srand(5355);

只是一遍又一遍地生成相同的数字(我现在觉得实现它很愚蠢。)

所以我想我会很聪明,像这样实现种子。

srand(rand());

这基本上与程序最初所做的相同,但输出了一组不同的数字(这是有道理的,因为 rand() 生成的第一个数字始终是 41。)

我唯一能想到的让这个更随机的是:

  1. 让用户输入一个数字并将其设置为种子(这很容易实现,但这是最后的手段) 或者
  2. 以某种方式将种子设置为计算机时钟或其他一些不断变化的数字。

我是不是已经不知所措了,我现在应该停下来吗?选项 2 是否难以实现?还有其他想法吗?

提前致谢。

最佳答案

选项 2 不难,给你:

srand(time(NULL));

您需要为 srand() 包含 stdlib.h 并为 time()time.h.

关于c++ - 在 C++ 中使用 rand() 函数的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1117292/

相关文章:

c++ - 使用 SFML 和 C++ 将像素打印到屏幕上

c++ - std::multiset<A,B> 的模板参数A、B分别是什么意思,是如何工作的?

c++ - 将双数组转换为 double 结构

c++ - 三重限制正整数组合的非递归枚举

python - 复制项目并根据机会将其添加到列表中

c++ - 验证用户输入的文本大小的函数c++

python - 为什么 randn 并不总是均值为 0 且方差为 1?

使用数字随机分配而不替换

python - 乘法游戏 python

c++ - 在Base 10 C++中显示1024位二进制数