做题

import random

# 等概率函数,随机取0,1,出来概率为不等概率
def equle_fun(p):
    zero_num = [0] * int(p * 100)
    one_num = [1] * int((1-p) * 100)
    zero_num.extend(one_num)
    return random.choice(zero_num)

# 0.5等概率
#  原始的随机数生成器,生成0 的概率为p,生成1的概率为1-p
#  构造上面两个独立的事件,序列是00,01,10,11概率分别为 p*p,p(1-p),(1-p)p,(1-p)*(1-p); 01和10,他们输出的概率均为p(1-p)。这2个作为等概率生成器,00和11情况丢弃

def half():
    first = equle_fun(0.3)
    second = equle_fun(0.3)
    if first == 1 and second == 0:
        return 1
    elif first == 0 and second == 1:
        return 0
    else:
        return half() 
        
print(half())


### 其他等概率思路和前面一样,构造多次的独立事件

  

posted @ 2021-07-17 17:02  哈哈哈喽喽喽  阅读(108)  评论(0编辑  收藏  举报