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


浙公网安备 33010602011771号