有一个函数func1能返回0和1两个值,返回0和1的概率都是1/2,问怎么利用这个函数得到另一个函数func2,使func2也只能返回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/4与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/4与3/4。