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

6 浏览
0 Comments

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

我正在编写一个程序,使用一个函数来生成两个随机整数,然后我会用这两个数来让用户进行相加并计算出和。目前,我遇到了一个问题,即重复生成了相同的数字。\n以下是目前的程序:\n#include\n#include\nusing namespace std;\n/*\n这个函数生成一个0到max_int之间的随机整数\n*/\nint get_rand_int(int max_int){\n srand(time(0));\n return int(rand()) % max_int;\n}\n这个程序生成0到100之间的随机加法问题\nint main(){\n int num1 = get_rand_int(101);\n int num2 = get_rand_int(101);\n cout << num1 << endl;\n cout << num2 << endl;\n请注意,这是我的老师布置的一个作业问题。他提供了程序的主要框架,我们需要填写其中的空白部分。我觉得问题可能出在我函数中的srand部分,但这是我的老师完成的,所以我不确定是否需要改动它。提前感谢您的帮助。

0
0 Comments

问题:我的随机数生成器打印重复的数字。

原因:在主函数中调用srand(time(0))来设置当前时间,以便只使用一次随机生成。然而,由于在循环中多次调用get_rand_int函数,可能会导致重复的随机数。

解决方法:将srand(time(0))调用放在主函数中,以确保只调用一次。这样可以保证每次调用get_rand_int函数时,都使用不同的种子,从而生成不同的随机数。

下面是修改后的代码:

int main(){
    srand(time(0));
    int num1 = get_rand_int(101);                          
    int num2 = get_rand_int(101);
    cout << num1 << endl;
    cout << num2 << endl;
}

0
0 Comments

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

问题原因:您在程序中只能对随机生成器进行一次种子操作。您现在在函数get_rand_int中进行了种子操作,并且在很短的时间内调用了该函数两次。种子最终相同,因此您得到相同的数字序列。

解决方法:将随机生成器的种子操作放置在主函数的开头,并确保只执行一次。

示例代码如下:

srand(time(0)); // 这个操作必须在主函数的开头执行一次

通过将种子操作放在主函数的开头,并且只执行一次,可以解决随机数生成器打印重复数字的问题。

0
0 Comments

问题的原因是由于每次调用函数时都会重新初始化随机序列,而time只在每秒钟改变一次,所以在一秒钟的延迟内连续调用函数会得到相同的数字。

解决方法是在程序的开头(比如在main函数中)只调用一次srand来初始化随机序列。

我是这么想的。我想我需要告诉我的老师他弄错了!谢谢你的帮助!

0