|
|
发表于 2009-11-21 12:04:00
|
显示全部楼层
Re:用rand产生一组随机数问题
/* Maximum value that can be returned by the rand function. */
#define RAND_MAX 0x7fff
有了上面这个定义,自然就明白了。
(double)rand() / (RAND_MAX + 1)
就是利用随机数,得到位于[0,1)这个比例区间的一个系数。如果除数是RAND_MAX,那么这个区间就是[0,1]。另外,这里转换为double,是为了避免+1后溢出(或变为最大负整数)。(16位机)
(range_max - range_min)
实际的区间范围.系数乘以这个实际区间范围,就得到了在这个区间中的一个数值。
最后加上range_min,就得到了最终的值 [range_min, range_max)。
|
|