#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random
def random_weight(weight_data):
total = sum(weight_data.values()) # 權重求和
ra = random.uniform(0, total)# 在0與權重和之前獲取一個隨機數
curr_sum = 0
ret = None
keys = weight_data.iterkeys() # 使用Python2.x中的iterkeys
# keys = weight_data.keys() # 使用Python3.x中的keys
for k in keys:
curr_sum += weight_data[k]# 在遍歷中,累加當前權重值
if ra <= curr_sum: #當隨機數<=當前權重和時,返回權重key
ret = k
break
return ret
weight_data = {'a': 10, 'b': 15, 'c': 50,'d':12,'e':60,'f':30}
# res = random_weight(weight_data)
ww = set()
dic ={}
for i in xrange(100):
res = random_weight(weight_data)
if res not in ww:
ww.add(res)
dic[res] = 1
else:
dic[res]+=1
print(dic)