从另一个概率分布 P(x) 生成概率分布 P(y),使得 P(x) 中的最高概率最不可能出现在 P(y) 中

Generating a probability distribution P(y) from another probability distribution P(x) such that highest probability in P(x) is least likely in P(y)

所以手头的问题是我在带有计数器的字典中有一些值,比方说

dict = {"cats":0, "dogs":0, "lions":0} 

我想从这个字典中随机 select 键并在 select 特定键时增加计数器。

但是当我 select 键并增加这些键的计数器时,我希望 selection 的概率高于计数器值小于其他键的键。

我在下面的回答中实现了这个想法。请告诉我这是否有意义,是否有更好的方法?

许多 方法可以解决这个问题,但作为替代方案,我很想计算概率为:

def iweight(k, *, alpha=1):
    p = 1/(alpha + np.array(k))
    return p / np.sum(p)

可用作:

counts = [0, 0, 0, 20]
for _ in range(20):
    i = np.random.choice(len(counts), p=iweight(counts))
    print(i)
    counts[i] += 1

alphaDirichlet process 互补:小值会导致它更喜欢从小计数中提取值,而大值会使它更均匀。

什么是最好的将取决于您建模的过程,例如应该选择多少小计数而不是中等计数,是否应该选择最大计数等等。这完全取决于你所追求的分布,统计文献应该有很多关于如何开始考虑这个问题的例子。