rand5产生rand7

以下的randN代表随机产生0~N的数,每个数出现的概率相等。

从rand7产生rand5比较简单,当rand7得到6或者7时再次运行rand7,直到小于6时输出。

但是从rand5产生rand7就没有这么方便了。

可以考虑rand5产生更大的rand。

考虑另一个问题,如果有个rand9的程序,要随机产生0~999的数,这时思路很清晰,先rand百位,然后rand十位,然后rand个位。这样得到得数的概率都相同。

此时就可以联想到rand5产生一个6进制的2位数,即rand5 * 6 + rand5,得到rand35,然后就容易得到rand7了。

你可能感兴趣的:(算法)