我的随机数生成器正在打印重复的数字
My random number generator is printing duplicate numbers
我正在开发一个程序,该程序使用一个函数,该函数会生成 2 个随机整数,稍后我将使用这些整数来要求用户相加并计算出总和。目前,我遇到了一个重复相同数字的问题。
到目前为止的程序如下:
#include<iostream>
#include<ctime>
using namespace std;
/*
This function generates a random integer
between 0 and max_int
*/
int get_rand_int(int max_int){
srand(time(0));
return int(rand()) % max_int;
}
This program generates random addition problems
with integers between 0 and 100
int main(){
int num1 = get_rand_int(101);
int num2 = get_rand_int(101);
cout << num1 << endl;
cout << num2 << endl;
请注意这是老师布置的家庭作业。他为我们提供了骨架,我们正在努力填补空白。我觉得问题出在我的功能的 srand 部分,但那是我老师工作的一部分,所以我不确定我是否需要触及它。提前致谢。
您只能在程序中为随机生成器播种一次,
srand(time(0)); // this must happen only once, at the beginning of main()
您现在将它植入函数 get_rand_int
中,并在很短的时间内调用该函数两次。种子最终是相同的,所以你得到相同的数字序列。
是的。 srand
用 time
的结果初始化随机序列。但是,time
每秒仅更改一次!这意味着如果您在一秒的延迟内调用您的函数两次,您将获得相同的数字。
一个解决方案是在程序开始时调用 srand
一次(例如,在 main
函数中)。
调用main中的srand(time(0))只设置一次当前时间,即刻使用随机生成。
int main(){
srand(time(0));
int num1 = get_rand_int(101);
int num2 = get_rand_int(101);
cout << num1 << endl;
cout << num2 << endl;
}
我正在开发一个程序,该程序使用一个函数,该函数会生成 2 个随机整数,稍后我将使用这些整数来要求用户相加并计算出总和。目前,我遇到了一个重复相同数字的问题。
到目前为止的程序如下:
#include<iostream>
#include<ctime>
using namespace std;
/*
This function generates a random integer
between 0 and max_int
*/
int get_rand_int(int max_int){
srand(time(0));
return int(rand()) % max_int;
}
This program generates random addition problems
with integers between 0 and 100
int main(){
int num1 = get_rand_int(101);
int num2 = get_rand_int(101);
cout << num1 << endl;
cout << num2 << endl;
请注意这是老师布置的家庭作业。他为我们提供了骨架,我们正在努力填补空白。我觉得问题出在我的功能的 srand 部分,但那是我老师工作的一部分,所以我不确定我是否需要触及它。提前致谢。
您只能在程序中为随机生成器播种一次,
srand(time(0)); // this must happen only once, at the beginning of main()
您现在将它植入函数 get_rand_int
中,并在很短的时间内调用该函数两次。种子最终是相同的,所以你得到相同的数字序列。
是的。 srand
用 time
的结果初始化随机序列。但是,time
每秒仅更改一次!这意味着如果您在一秒的延迟内调用您的函数两次,您将获得相同的数字。
一个解决方案是在程序开始时调用 srand
一次(例如,在 main
函数中)。
调用main中的srand(time(0))只设置一次当前时间,即刻使用随机生成。
int main(){
srand(time(0));
int num1 = get_rand_int(101);
int num2 = get_rand_int(101);
cout << num1 << endl;
cout << num2 << endl;
}