【发布时间】:2012-03-18 01:56:47
【问题描述】:
我的输出是 20 个随机 1,而不是介于 10 和 1 之间,谁能解释为什么会这样?
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
srand((unsigned)time(0));
int random_integer;
int lowest=1, highest=10;
int range=(highest-lowest)+1;
for(int index=0; index<20; index++){
random_integer = lowest+int(range*rand()/(RAND_MAX + 1.0));
cout << random_integer << endl;
}
}
输出: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
【问题讨论】:
-
我只能生成一个 1,没有随机数生成作用于我的代码,我不知道其中的实际问题,请任何人清除我的代码...
-
我可以建议像
(rand() % range) + lowest这样的东西吗? -
@JoachimPileborg,你的建议非常好,它有帮助,但有一个小问题,我需要的答案在 1 到 10 之间,但它有时会产生 0 而没有数字 10... .
-
@Joachim 不幸的是,您的建议实际上非常糟糕,因为它使随机数可能更加偏颇。
-
当然不是,任何严肃的应用程序都应该使用好的随机数源。但是对于像音轨改组这样简单的东西,没有人会注意到其中的区别。
标签: c++