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

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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值