我们都知道在C/C++中有一个生成随机数的函数rand(),可是这个函数所生成的随机数的取值范围为:0-32767,往往在具体的项目工作中我们需要生成在某一区间的随机数,这时我们可以用如下的代码函数进行实现之:
#include <iostream>
#include <stdlib.h>
using namespace std;
const int MAX_RAND = 32767;
const int RandomNum(int min_num = 0, int max_num = MAX_RAND)
{
if (min_num > max_num) //如果将区间下限和上限写反,则交换
{
swap(min_num,max_num);
}
int interval_num = max_num - min_num;
if (interval_num <= 0)
{
return 0;
}
else if (interval_num < MAX_RAND)
{
return min_num + (rand() % interval_num);
}
else
{
return min_num + int(((rand() % MAX_RAND) * 1.0 / MAX_RAND) * interval_num);
}
}
int main()
{
int a = RandomNum(); //默认0-32767区间
printf("区间0-32767随机数:%d\n",a);
int b = RandomNum(1000); //1000-32767区间
printf("区间0-1000随机数:%d\n",b);
int c = RandomNum(1000,50000); //1000-50000区间
printf("区间1000-50000随机数:%d\n",c);
int d = RandomNum(50000,80000); //50000-80000区间 超出32767最大区间
printf("区间50000-80000随机数:%d\n",d);
int e = RandomNum(2000,1000); //1000-2000区间 区间上下限写反
printf("区间1000-2000随机数:%d\n",e);
return 0;
}
输出如下: