【发布时间】:2020-06-10 17:50:26
【问题描述】:
什么是对 N 个数字进行采样的有效方法,其中每个数字是通过首先从固定的预定列表中选择一个随机分布(使用某些特定的离散分布),然后从该选择的分布中采样来进行采样的。
因此,例如,如果我们想以 0.30 的概率选择 0,以 0.30 的概率选择 1,以 0.40 的概率我们想选择[0,1) 中的任何实数且均匀分布,我们可以这样写:
np.choose(
np.random.choice(2, size=N, p=[0.6, 0.4]),
np.vstack((
np.random.choice(2, size=(1,N)),
np.random.uniform(size=(1,N))
)))
但是,这会生成NxD 随机数(其中D 是分布数)并使用NxD 空间。有没有更有效的vectorized(即没有O(N) python for-loops)方法来实现这一点?
如果不是在一般情况下,上述特定的组合分布能否以某种方式有效地生成?
【问题讨论】:
标签: python numpy random statistics probability