做题
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()) ### 其他等概率思路和前面一样,构造多次的独立事件