【问题描述】
rand7是一个能生成1-7的随机数。要求利用rand7生成1-10的随机数。
【算法思想】
1.组合数学方法
第1次 1 2 3 4 5 6 7 之中用rand7取一个数
第2次从 2 3 4 5 6 7 8 之中取一个数
第3次从 3 4 5 6 7 8 9 之中取一个数
第4次从 4 5 6 7 8 9 10 之中取一个数
第5次从 5 6 7 8 9 10 1 之中取一个数
第6次从 6 7 8 9 10 1 2 之中取一个数
...
第10次从 10 1 2 3 4 5 6 之中用取一个数
1-10每个数字在上表中都出现了7次,共有70个数字,这样每个数字被命中的概率为1/10。
这里的关键词是"命中".
第11次重新循环,从 1 2 3 4 5 6 7 之中取一个数
第12次从 2 3 4 5 6 7 8 之中取一个数
......
按照这样的方法,1-10每个数
第1次 1 2 3 4 5 6 7 之中用rand7取一个数
第2次从 2 3 4 5 6 7 8 之中取一个数
第3次从 3 4 5 6 7 8 9 之中取一个数
第4次从 4 5 6 7 8 9 10 之中取一个数
第5次从 5 6 7 8 9 10 1 之中取一个数
第6次从 6 7 8 9 10 1 2 之中取一个数
...
第10次从 10 1 2 3 4 5 6 之中用取一个数
1-10每个数字在上表中都出现了7次,共有70个数字,这样每个数字被命中的概率为1/10。
这里的关键词是"命中".
第11次重新循环,从 1 2 3 4 5 6 7 之中取一个数
第12次从 2 3 4 5 6 7 8 之中取一个数
......
按照这样的方法,1-10每个数