【发布时间】:2017-04-26 11:22:32
【问题描述】:
给定一个概率分布——对象与其概率的映射——我想要一种算法,它可以从地图中选择随机对象并且无需替换(概率分布会根据选择进行更新)。但是,该算法必须具有 O(1) 的空间复杂度并具有高质量的随机性。我尝试搜索实现,但它们似乎都没有这两个属性。
编辑:
没有替换的概率: 你有一袋对象,每个对象都有被选中的概率。选择一个对象后,将其从包中取出。现在所有对象被选中的概率不同。
在 O(1) 空间复杂度的情况下,我们不会存储一个包含根据被选中概率重复的对象的列表。相反,我们只存储概率分布并迭代排列(但不存储该排列)。
【问题讨论】:
-
概率表示为浮点数或整数权重相对于总数(即表示为有理比率)?
-
@Adrian 两者都可以,因为它们都可以达到相同的结果。
-
你对输入对象的销毁没问题->过程中的概率图吗?
-
你说的“没有替换”是什么意思?
-
时间复杂度对你来说不重要吗?您如何定义没有 O(n) 复杂度的“对象”? (这对于某些“对象”集是可能的,但对于其他“对象”集则不是,这可能会影响算法)。 每个对象是否存在 O(1) 空间复杂度?最重要的是,您为什么有这些要求?您的问题似乎含糊不清。
标签: algorithm math random language-agnostic