我正在做一个书本练习,说要编写一个生成伪随机数的程序。我从简单的开始。
#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。)
我唯一能想到的让这个更随机的是:
- 让用户输入一个数字并将其设置为种子(这很容易实现,但这是最后的手段) 或者
- 以某种方式将种子设置为计算机时钟或其他一些不断变化的数字。
我是不是已经不知所措了,我现在应该停下来吗?选项 2 是否难以实现?还有其他想法吗?
提前致谢。
最佳答案
选项 2 不难,给你:
srand(time(NULL));
您需要为 srand()
包含 stdlib.h
并为 time()包含
.time.h
关于c++ - 在 C++ 中使用 rand() 函数的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1117292/