孙肖宁

Python实现根据概率获取元素
设计思路:产生一个0到1的随机数循环遍历需要产生概率的列表,以及对应的概率列表判断随机数是否比第一个数小,小的话就...
扫描右侧二维码阅读全文
21
2019/09

Python实现根据概率获取元素

设计思路:

  • 产生一个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])
Last modification:September 22nd, 2019 at 11:16 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment