chriszg 发表于 2018-8-11 12:14:22

Python带权重随机数的简单实现

import random  

  
def random_weight(weight_data):
  
    _total = sum(weight_data.values())    # 权重求和
  
    _random = random.uniform(0, _total)   # 在0与权重和之前获取一个随机数
  
    _curr_sum = 0
  
    _ret = None
  
    try:
  
      _keys = weight_data.iterkeys()    # 使用Python2.x中的iterkeys
  
    except AttributeError:
  
      _keys = weight_data.keys()      # 使用Python3.x中的keys
  
    for _k in _keys:
  
      _curr_sum += data             # 在遍历中,累加当前权重值
  
      if _random <= _curr_sum:          # 当随机数<=当前权重和时,返回权重key
  
            _ret = _k
  
            break
  
    return _ret
页: [1]
查看完整版本: Python带权重随机数的简单实现