我的随机数生成器正在打印重复的数字
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
的结果初始化随机序列。但是,time
每秒只能更改一次!这意味着,如果您在一秒的延迟内调用函数两次,则会得到相同的数字。
一种解决方案是在程序开始时(例如,在main
函数中)只调用srand
一次。
您必须在程序中仅播种一次随机生成器,
srand(time(0)); // this must happen only once, at the beginning of main()
您现在在函数get_rand_int
中播种它,并在很短的时间内调用该函数两次。种子最终是相同的,所以你会得到相同的数字序列。
在主中调用 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;
}
相关文章:
- 打印数字图案
- 将数字打印成文字
- 为什么有时我输入一个整数,程序将第一个输入的数字打印成十进制数?
- 必须首先打印向量 v1 中最接近整数 x 的数字<int>
- 首先按给定顺序打印所有数字,然后使用 Array 打印所有字符和其他符号
- 我的问题是关于C++中数字和序列的重复以及如何打印它们?
- 编译器始终打印十六进制/八进制数字
- 我想使用哈希图打印非重复的数字;
- 如何在控制台上打印出带有数字 0-99 的简单数组
- 错误含义;以二进制形式打印数字
- 为什么这个程序接受整数和字母数字输入并打印它们? C++ 中的 std::string 也采用整数值吗?
- 列中打印数字时如何避免打印垃圾?
- 如何编写一个程序来打印特定基数的前N个数字
- C++ 在地板函数之后以十六进制打印数字
- C 不将重复数字打印到输出
- 阿姆斯特朗数字打印错误
- 用数字打印所有可能的组合
- 将数字打印为字符串类型的数字
- 如何以特定格式将数字打印到字符串的中间
- 如何将矢量中的数字打印到文件中