python 按百分比抽奖

通过给定百分比实现抽奖

def weighted_random(items):
    # 抽奖概率 [('iphone', 10), ('ipad', 40), ('itouch', 50)]
    total = sum(w for _, w in items)
    n = random.uniform(0, total)  # 在饼图扔骰子
    x = None
    for x, w in items:  # 遍历找出骰子所在的区间
        if n < w:
            break
        n -= w
    return x


if __name__ == '__main__':
    items = [('iphone', 10), ('ipad', 40), ('itouch', 50)]
    res = {'iphone': 0, 'ipad': 0, 'itouch': 0}
    for i in range(100000):
        gift = weighted_random(items)
        res[gift] += 1
    print res

posted @ 2021-02-23 17:06  wwzhen  阅读(383)  评论(0)    收藏  举报