我的随机数生成器正在打印重复的数字

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 中,并在很短的时间内调用该函数两次。种子最终是相同的,所以你得到相同的数字序列。

是的。 srandtime 的结果初始化随机序列。但是,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;

}