简单的带权随机算法

# ### 带权随机算法

def weight_choice(weight):
    """
    :param weight: list对应的权重序列
    :return:选取的值在原列表里的索引
    """
    t = random.randint(0, sum(weight) - 1)
    for index, val in enumerate(weight):
        t -= val
        if t < 0:
            return index

# 假设weight=[20,30,50]   # 即 [0,20)为第一个区间;[20,50)为第二个区间;[50,100)为第三个区间;
t = random.randint(0, 100)   # 从[0,100)中随机取一个数,假设t=49
for i, val in enumerate([20,30,50]):   # i和val是0,20; 1,30; 2,50
    t -= 20   # 得到t=29 --> t-=30 得到t=-1,则返回 i=1,即随机结果落在第二个区间

 


 

 
posted @ 2020-04-16 17:17  斑驳岁月  阅读(285)  评论(0编辑  收藏  举报