我有一个模型,其中 M 个状态中的状态 j 以概率 p_j 选择。概率可以是任何实数。这指定了 M 个状态的混合模型。我可以在恒定时间内访问所有 j 的 p_j。我想制作大量(N)个随机样本。最明显的算法是
1) 计算累积概率分布 P_j = p_1+p_2+...p_j。(男)
2) 对于每个样本,在 [0,1] 中选择随机浮点 x。上)
3) 对于每个样本,选择 j 使得 min(0,P_j-1) < x <= max(1,P_j)。O(Nlog(M))
所以渐近复杂度为 O(Nlog(M))。N的因素显然是不可避免的,但我想知道log(M)。是否有可能在实际实施中克服这个因素?