是否有一个较短的版本,有偏见的概率?

问题描述

import random as rd
def prob(times):
    h,t=0,0
    for _ in range(times):
        if rd.randrange(1,11)<=7:h+=1
        else:t+=1
    return h

要返回偏头硬币翻转70%头的结果

解决方法

由于您只返回foreach,因此实际上并不需要h。也不需要使用t -您可以使用randrange来达到同样的目的。

对于实际计数,您可以使用random,并且可以使用sum将布尔结果转换为0或1:

int

或以lambda表示法:

def prob(times):
    return sum(int(rd.random() < 0.7) for _ in range(times))