直接先贴上代码吧。
#include<ctime>
nclude <cstdlib>
const double SAMPLE_SUM = 10000000;
double random(double start, double end)
{
return start+(end-start)*rand()/(RAND_MAX + 1.0);
}
上面这个函数可以产生start到end之间的随机数,及[start, end),最大值小于end,最小值可以等于start。
rand()函数产生的数值范围为0~RAND_MAX,及0 <= rand() <= RAND_MAX,理解这一点就不难理解上面的代码了。
如果需要每次产生的随机数不一样,可以使用下面的代码。
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
// 产生[start, end)之间的随机浮点数
double random(double start, double end)
{
return start+(int)(end-start)*rand()/(RAND_MAX + 1.0);
}
int main()
{
srand(unsigned(time(0)));
rand(); // 这种方法每次产生的第一个随机数都一样,所以这里先产生一次随机数,后面的随机数每次就不一样了
for(int i=0;i<10;i++)
{
cout<<(int)random(0, 100)<<endl; // 产生0-99的整数
}
system("pause");
return 0;
}