首页 > 解决方案 > 如何从每个子集的不同概率的超集中选择一个随机数

问题描述

我需要从一组 Y 的 100 个数字中随机选择一个数字作为 [1.00 到 2.00),具有以下概率的四个子集。

  1. Y1--> [1.00-1.39)---概率(0.4)
  2. Y2--> [1.40-1.69)---概率(0.3)
  3. Y1--> [1.70-1.89)---概率(0.2)
  4. Y1--> [1.90-1.99)---概率(0.1)

我该如何解决这个问题?

标签: pythonrandomprobability

解决方案


您可以使用random.choices. 好处是您可以指定权重

import random
def pick_random():
    randoms = [random.uniform(1.0, 1.39), random.uniform(1.4, 1.69), random.uniform(1.7, 1.89), random.uniform(1.9, 1.99)]
    weights = [0.4, 0.3, 0.2, 0.1]
    return round(random.choices(randoms, weights=weights)[0], 2)

推荐阅读