题目分析
- 这个函数只会生成0和1,虽然不等概率,但是如果我们roll两次,只记录结果是(0,1)和(1,0)的这两种情况。
- 假设roll出0的概率是p,那么roll出1的概率就是1-p。最终结果(0,1)的概率就是p(1-p),最终结果(1,0)的概率就是(1-p)p。
- 最终只需将得到(1,0)的结果返回0,得到(0,1)的结果返回0即可。反之亦然。
# 创建不等概率函数
def fn(): return 1 if random.random() > 0.3 else 0
直接开撸
def fn2(): ans = fn() while ans == fn(): ans = fn() return ans