我们平时比较多会遇到的一种情景是从一堆的数据中随机选择一个, 大多数我们使用random就够了, 但是假如我们要选取的这堆数据分别有自己的权重, 也就是他们被选择的概率是不一样的, 在这种情况下, 就需要使用加权随机来处理这些数据...加速搜索
上面这个方法看起来非常简单, 已经可以完成我们所要的加权随机, 然是最后的这个for循环貌似有些啰嗦, Python有个内置方法bisect可以帮我们加速这一步
import random
import...去掉临时变量
其实在这个方法里面totals这个数组并不是必要的, 我们调整下策略, 就可以判断出weights中的位置
def weighted_choice(weights):
rnd = random.random...更多的随机数
如果我们使用同一个权重数组weights, 但是要多次得到随机结果, 多次的调用weighted_choice方法, totals变量还是有必要的, 提前计算好它, 每次获取随机数的消耗会变得小很多..., WeightedRandomGenerator的速度是weighted_choice的100倍
所以我们在对同一组权重列表进行多次计算的时候选择方法4, 如果少于100次, 则使用方法3
5.