从具有概率权重的列表生成数字列表

2024-04-20 05:31:50 发布

您现在位置:Python中文网/ 问答频道 /正文

如何从35个给定概率的数字列表中生成随机数列表:

范围(1,5)-p1=0.5的数字概率

范围(6,15)-p2=0.25的数字概率

范围(16,35)-p3=0.25的数字概率

我尝试使用numpy.random.choice(),但我不知道如何插入可能的数字列表


Tags: numpy列表数字random概率p2choicep3
2条回答

您可以通过选择具有指定概率的适当范围,然后将所选范围用作random.choice的参数来实现这一点:

range_set = [range(1,6), range(6, 16), range(16, 36)]
random.choice(*random.choices(range_set, [0.5, 0.25, 0.25]))

这假设您希望在给定范围内进行统一选择

如果要从每个组中统一选择:

p=np.array([0.5/5]*5+[0.25/30]*30)
np.random.choice(np.arange(1,36),p=p/p.sum())

更新

如果您想选择一个随机数列表(您也可以设置有或没有替换标志):

np.random.choice(np.arange(1,36), size=N, replace=True, p=p/p.sum())

相关问题 更多 >