利用随机生成器rand5()可以生成随机数[1,5].
(1,5)的随机数,可以产生(0,1)的随机数;
7看成二进制111,用(0,1)产生的随机数分别对每位取值,如果取得的是000的话,舍去重新再取,得到的结果就是(1,7)之间的随机数.
//generate zero or one randly
int rand2()
{
int result = rand5();
while(result == 5)
{
result = rand5();
}
return result % 2;
}
int rand7()
{
int high, mid, low;
high = rand2();
mid = rand2();
low = rand2();
while(high == 0 && mid == 0 && low == 0)
{
high = rand2();
mid = rand2();
low = rand2();
}
return low + mid*2 + high *4;
}
附带一个interesting网站
http://fayaa.com/tiku/view/164/
本文介绍了一种利用rand5()函数生成(1,7]区间内均匀分布随机整数的方法。通过将rand5()产生的随机数转化为二进制位上的0或1,并组合这些位来形成(1,7]区间内的随机数。文章提供了具体的实现代码。
4222

被折叠的 条评论
为什么被折叠?



