document.write('
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)。实现代码如下:
import random
#返回0和1的概率都为1/2
def func1():
return int(round(random.random())
#返回0的概率为1/4, 返回1的概率为3/4
def func2():
a1=func1()
a2=func1()
tmp=a1
tmp1=(a2<<1)
if tmp==0:
return 0
else:
return 1
if __name__=="__main__":
i=0
while i<16:
print func2(),
i+=1
print\'\\n\'
i=0
while i<16:
print func2(),
i+=1
程序的运行结果为:
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。
');