zoukankan      html  css  js  c++  java
  • 以概率列表选择对应元素,轮盘概率选择Python实现

    做法和其他人一样,搞了半天明白了,ran = random.random(),是产生0———1之间的随机浮点数,
    即 如下代码,第一个随机生成的数小于0.1的概率就是 10%,若第一个数大于0.1剩下的就是概率中先拿和后拿问题
    import random
    def select():
        num_ = ['a', 'b', 'c']
        #概率列表
        r_ = [0.1, 0.3, 0.6]
        sum_ = 0
        ran = random.random()
        for num, r in zip(num_, r_):
            sum_ += r
            if ran < sum_ :break
        return num
    """
    验证结果,多次循环把a,b,c单独出现的次数计数,判断对应概率
    """
    num_a, num_b ,num_c = 0, 0, 0
    for each in range(100000):
        result = select()
        if result == 'a':
            num_a += 1
        elif result == 'b':
            num_b += 1
        else:
            num_c += 1
            
    print(num_a, num_b, num_c)

    结果如下还是符合预期的:

    9983 29973 60044
  • 相关阅读:
    Python之图片格式转换
    pip依赖安装与记录
    Spectral Graph Theory的一些定理
    Beamer加中文
    Python之json
    Windows之建立C++开发环境
    Mysql分表教程
    null和空 not null
    yii 隐藏index.php的步骤
    yii泛域名
  • 原文地址:https://www.cnblogs.com/liuda9495/p/7644350.html
Copyright © 2011-2022 走看看