想问问这个生成随机数(一到4)的函数的原理
想问问这个生成随机数(1到4)的函数的原理
感觉这个函数随机生成的数的概率不相等??????
------解决思路----------------------
搜“线性同余”?
------解决思路----------------------
[0,3]的话 rand() % 4
[1,4]的话 rand() % 4 + 1
在rand()分布均匀的情况下可以保证其分布是均匀的
如果范围不是32768的约数那么应该尽量不用rand()
如果是C++11以上有 <random>
备用的有 <boost/random>
参考
Channel9 @ MSDN
Stackoverflow
MapRand(UINT nMax) //随机函数
{
int nRand=rand(); //rand返回值在0到RAND_MAX(32767)之间
float fMap=(float)nMax/RAND_MAX;
float fRetVal=(float)nRand*fMap+0.5f;
return (UINT)fRetVal;
}
感觉这个函数随机生成的数的概率不相等??????
------解决思路----------------------
搜“线性同余”?
------解决思路----------------------
[0,3]的话 rand() % 4
[1,4]的话 rand() % 4 + 1
在rand()分布均匀的情况下可以保证其分布是均匀的
如果范围不是32768的约数那么应该尽量不用rand()
如果是C++11以上有 <random>
备用的有 <boost/random>
参考
Channel9 @ MSDN
Stackoverflow