1. 如果要产生的随机数范围不大,可以使用下面一个函数,
int my_rand(int M,int N)
{
return (int)((double)rand()/(double)RAND_MAX*(N-M+1)+M);
}
因为上述的RAND_MAX的是0x7FFF(32767);
2. 如果在高版本的VC下,使用rand_s,得到一个范围较大的随机数区间,可以使用下面的一个函数:
unsigned int RandUInt32(unsigned int min, unsigned int max)
{
unsigned u;
rand_s(&u);
return (unsigned)((double)u / ((__int64)UINT_MAX + 1) * (max - min) + min);
}
因为上述的UINT_MAX的值为0xFFFF.FFFF。
但要注意,根据MSDN文档,需要定义宏#define _CRT_RAND_S,而且要在stdafx.h文件内(不是文件外)的最上面去定义它!!