【发布时间】:2017-11-23 14:01:48
【问题描述】:
我有一个包含 n 个元素 (e_i) 的列表。对于每一个 i,e_i 都有一个概率 p_i 被选中。
我想编写一个算法来从论文 n 中选择 k 个元素,但是我在选择它们时必须尊重每个元素的概率。我不知道该怎么做,我不知道有什么算法可以做到这一点:/
你能指导我的反思吗?
【问题讨论】:
-
Here is some overview(有限离散分布)。有简单的和不那么简单的方法,都有自己的优点和缺点。如果这不是家庭作业或学习,许多编程语言可能会在其库或非常常见的库中支持这一点(例如python: random.choice)。
-
根据概率对元素进行排序并首先选择
k?我错过的问题还有更多吗? -
@svasa 这意味着当采样 n-1 为 0 时采样最后一个元素的概率。但是您的方法在某种程度上与线性搜索(累积概率,然后是搜索)有关。其他算法正试图更有效地做到这一点,例如在恒定时间内(经过一些设置)。
-
您希望始终有 k 个不同的值,还是允许某些值在所选的 k 个中多次出现?