Algorithm n个数的集合S-有一个子集,其中每个元素出现的概率相等

Algorithm n个数的集合S-有一个子集,其中每个元素出现的概率相等,algorithm,set,Algorithm,Set,我有这个问题 给你一组n个数。必须从S中选取k个数的子集S',使S中的每个元素出现在S'中的概率相等(即,每个元素都以概率k/n进行选择)。你只可以把数字传一次。如果n未知呢 我甚至有一个解决方案: 仍然:我根本不理解问题文本 我得到了一组n个数字。好的我需要选择k个数的一个子集(2^n个子集是可能的),这样S的每个元素出现在S'中的概率是相等的。。。对我来说,最明显的答案是只获取空的S'集合:S中的每个元素都有0个概率位于S'中 如果这是不可接受的(并且应该说明),我想我应该计算S中最经常出现

我有这个问题

给你一组n个数。必须从S中选取k个数的子集S',使S中的每个元素出现在S'中的概率相等(即,每个元素都以概率k/n进行选择)。你只可以把数字传一次。如果n未知呢

我甚至有一个解决方案:

仍然:我根本不理解问题文本

我得到了一组n个数字。好的我需要选择k个数的一个子集(2^n个子集是可能的),这样S的每个元素出现在S'中的概率是相等的。。。对我来说,最明显的答案是只获取空的S'集合:S中的每个元素都有0个概率位于S'中

如果这是不可接受的(并且应该说明),我想我应该计算S中最经常出现的元素(出现T次),并使每个其他元素在S中正好有T个实例(如果元素包含在S中,它仍然应该是子集)


我不太了解优先级队列解决方案,也不了解k/n概率。有人能帮我解决这个问题吗?

这是一个非常著名的问题,其结果是一种称为的技术——一种非常有用的大数据流处理算法。前面的链接可以为您提供解决方案的精确设置、动机和解释。

当他们说每个元素需要相等的概率时,他们的意思是每个元素都是不同的。即使设置了
{1,2,2,3}
,这两个
2
都是单独的元素,它们看起来是相同的,但不是。您关于
T实例的段落的标题是错误的,因为您认为这些
2
s是同一个元素。为了简单起见,想象一个程序员的集合,其中的元素只能出现一次。很有趣,谢谢你!但有一个问题:维基百科页面中的算法是否也适用于k=1,即仅在子集S'中使用一个元素?首先,我想说,我在流程中前进的次数越多,就越不可能选择一个继任者来替换唯一选择的数字,它适用于k=1。你越是顺流而下:a。选择新元素的可能性较小,但b。如果它被选中,它被驱逐的机会就会减少。令人高兴的是——噗——数学计算出在流中的位置并不重要。这不是很棒吗?我喜欢这个简单的算法。