ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

有一个函数只会返回0和1,且返回0和返回1的概率不等。要求只能通过这个函数生成一个等概率返回0和1的函数

有一个函数只会返回0和1,且返回0和返回1的概率不等。要求只能通过这个函数生成一个等概率返回0和1的函数

题目分析

  1. 这个函数只会生成0和1,虽然不等概率,但是如果我们roll两次,只记录结果是(0,1)和(1,0)的这两种情况。
  2. 假设roll出0的概率是p,那么roll出1的概率就是1-p。最终结果(0,1)的概率就是p(1-p),最终结果(1,0)的概率就是(1-p)p。
  3. 最终只需将得到(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
返回列表