如何select从每个子集的概率不同的超集中随机数

How to select a random number from a super set with different probability of each sub set

我需要 select 从 100 个数字的集合 Y 中随机选择一个数字作为 [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)

我该如何解决这个问题?

您可以使用 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)