我需要帮助弄清楚如何在两个用户输入的值之间生成一定数量的随机数,包括在内。只是让你知道,我已经搜索过这个,但没有找到我刚才所说的。这是我的代码:
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
int userBeg, userEnd, outPut;
cout << "Enter a start value: ";
cin >> userBeg;
cout << "Enter an end value: ";
cin >> userEnd;
srand(time(NULL)); //generates random seed val
for (int i = 0; i < 5; i++) {
//prints number between user input, inclusive
outPut = rand()%((userEnd - userBeg) + 1);
cout << outPut << " ";
}//end for
return 0;
}//end main
我对以下范围内获得的输出感到困惑:1-100 产量输出数字介于但不包括边界,例如 50、97、24、59、22。但是,10-20 产量数字,例如 1、14、6、12、13。在这里,输出在边界之外以及它们之间。我究竟做错了什么?
预先感谢您的帮助!
原文由 bluthunder 发布,翻译遵循 CC BY-SA 4.0 许可协议
rand 返回 0 到
RAND_MAX
之间的数字。通过取模userEnd - userBeg + 1
边界将被限制为 0 和userEnd - userBeg
。如果随机数应该在给定的范围内,则应添加userBeg
,因此微积分变为