7.4 如何用一个随机函数得到另外一个随机函数
【出自XM面试题】
难度系数:★★★★☆ 被考察系数:★★★☆☆
题目描述:
有一个函数fun能返回0和1两个值,返回0和1的概率都是1/2,问怎么利用这个函数得到另一个函数fun2,使fun2也只能返回0和1,且返回0的概率为1/4,返回1的概率为3/4。
分析与解答:
func1得到1与0的概率都为1/2。因此,可以调用两次func1,分别生成两个值a1与a2,用这两个数组成一个二进制a2a1,它的取值的可能性为00,01,10,11,并且得到每个值的概率都为(1/2)*(1/2)=1/4,因此,如果得到的结果为00,则返回0(概率为1/4),其他情况返回1(概率为3/4)。实现代码如下:


程序的运行结果如下:
1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1
1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0
由于结果是随机的,调用的次数越大,返回的结果就越接近1/4与3/4。