我需要帮助解决如何生成一组在用户输入的两个值之间(包括这两个值)的随机数。请注意,我已经搜索了相关内容,但没有找到我所说的方法。以下是我的代码:
#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。这里,输出既在边界之外,也在边界之间。我做错了什么吗?谢谢您提前的帮助!
outPut +=userBeg
- Danhstd::uniform_int_distribution
。 - Danhrand
很快但质量低,那么在提取随机位之前,可以通过将其结果除以一些适当的小常数来消除(影响)最后几个位,从而获得更好的随机性。 - Cheers and hth. - Alf