我们先来看这样一个问题, 已知rand5能等概率产生1, 2, 3, 4, 5, 现要用rand5来实现rand7(rand7的意思是要等概率产生1, 2, 3, 4, 5, 6, 7), 该怎么搞呢...我们看看rand5 + rand5 行不行。 ...rand5 + rand5 的结果是2, 3, 4, 5, 6, 7, 8, 9, 10, 稍微思考一下, 就知道, 这些数肯定不是等概率的, 比如2的概率要低于5的概率。 所以, 不靠谱。...()
{
return myRandom(5);
}
// 仅由rand5来构造rand7
int rand7()
{
while(1)
{
// 构造等概率的0, 1, 2, 3, 4, ...原文:http://blog.csdn.net/stpeace/article/details/46672035
其实上面的rand(7)也可以用来生成rand(3),下面是我修改的代码
int rand31