我们先来看这样一个问题, 已知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的概率。 所以, 不靠谱。...所以, 我们先要让rand5产生等概率的间距数组(比如上述的10, 20, 30, 40, 50,), 然后让rand5产生连续的待插入数字(比如上述的0, 1, 2, ..., 9,)....()
{
return myRandom(5);
}
// 仅由rand5来构造rand7
int rand7()
{
while(1)
{
// 构造等概率的0, 1, 2, 3, 4,