VC下的产生区间随机数小结

来源:互联网 发布:java 字典序排序 代码 编辑:程序博客网 时间:2024/06/05 05:35

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文件内(不是文件外)的最上面去定义它!!




0 0