<原创>简述如何根据权重选出随机数?

DEMO:

     

分析:谈到随机我们首先会想到Python里面有个random的模块,负责处理随机数。首先看看里面有没有现成的方法来处理这类根据权重出随机数。

              

看到所有方法中貌似没有。

通过编写函数自己实现:

思路一、既然要在产生随机数的时候考虑到元素的权重,就上面这个例子而言,不如就将card的个数看成权重数,比如card1有10张,card2有20张,card3有15张。再把所有张数的卡片加到一个列表中。card_list = [card1,card1,......card2,......card3......],然后再用random.choice(card_list)从列表中随机抽出一张卡片,这样抽出的就是基于卡片概率的了。

思路二、更加通用的实现。比如有N张卡片,权重和为1,根据权重来随机选出卡片。那么可以根据他们概率划分区间。比如20的就是0~0.2区间  40的就是0.2~0.6  30的就是0.6~0.9

剩下10的就是0.9~1,然后直接用random.random()生成一个0~1的随机数,可看成概率,然后看看落在哪个区间,就返回哪张卡片。区间就是他们的概率比,这样也能随机根据概率选出的卡片了。

更多思路读者可以自行思考、集思广益,请留言。

子彦

原文地址:https://www.cnblogs.com/yezefei/p/7284969.html