我在生成随机双数时遇到了一些麻烦。我必须创建一个不带参数的函数,并返回一个double(0到100之间),即随机数。期待每次我尝试创建它时,它会返回值1.随机双重问题
我还必须使用一些符号常量。
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
double randDouble();
const double UPPER_BOUND = 100.0;
const double LOWER_BOUND = 0.0;
const int ARRAY_SIZE = 100;
double randDouble()
{
int randomInt;
double randomDouble;
srand(time(NULL));
randomInt = rand() % 100 + 1;
randomDouble = LOWER_BOUND + (randomInt/RAND_MAX/(UPPER_BOUND - LOWER_BOUND));
return randomDouble;
}
int main()
{
cout << randDouble();
return 0;
}
另一件事是,我必须使用预先给定的公式。
lower bound + (random integer/(maximum possible random number/(upper bound - lower bound))
您放入“公式”的randomInt范围是1 ... 100.然后,您应该在公式中使用这些值,而不是在RAND_MAX中使用这些值!或者甚至更好:忘记你的randomInt并把你的rand调用放入公式中。另外:我不会每次都打电话给srand,但是在你的节目开始时只有一次。 – nv3
'randomDouble = LOWER_BOUND +(rand()%100 + 1 /(UPPER_BOUND - LOWER_BOUND));'所以像这样?我仍然得到1作为回报。 –
不, LOWER_BOUND +((double)rand()*(UPPER_BOUND - LOWER_BOUND))/ RAND_MAX – nv3