设计思路:
- 产生一个0到1的随机数
- 循环遍历需要产生概率的列表,以及对应的概率列表
判断随机数是否比第一个数小,小的话就直接返回,并且结束循环,否则就进行下次循环,现在可以肯定比上一个数大,所以让第一个概率加上第二个概率再和产生的随机数进行比较。以此类推。
函数实现:import random def random_pick(some_list,probabilitie_list): x=random.uniform(0, 1) cumulative_probability = 0.0 for item,item_probability in zip(some_list,probabilitie_list): cumulative_probability = cumulative_probability + item_probability if x < cumulative_probability: break return item
参数说明:
- some_list:求概率的列表
- probabilitie_list:概率列表
测试函数:
i=0
while i<100:
i+=1
print random_pick(['a','b','c','d'],[0.4,0.2,0.3,0.1])