我想使用Numpy生成一个使用范围和特定大小的非均匀随机样本,如下所示:
np.random.choice(m=5, n, p=[0.1, 0, 0.3, 0.6, 0])
,
然而,我希望基于m
的大小自动地随机获得p
,而不需要如上所述手动写入p=[0.1, 0, 0.3, 0.6, 0])
。如何在Numpy中做到这一点?
一种获取长度为m
的随机float
值列表的方法,其总和为1
:
m = 5
values = [np.random.rand() for _ in range(m)]
p = [v/sum(values) for v in values]
然而,由于values
都在0-1的范围内,因此权重比您可能追求的更均匀。你必须详细说明你想要什么类型的分发,才能得到更具体的答案。