1
A
回答
2
我猜的答案,我的问题是这样的:
pick first k elements and store them into an array of length k
for each element x > k
insert x with probability k/x
choose position at random between 1 and k
1
简单(如果k < = n)。这就像获得k个号码列表< n。这将是要获得的数字位置的列表。创建范围列表(0..n),从中获得k个随机数。直到最后一刻,您不必阅读物品的实际列表。显然,这只是有用的是最后的项目列表是慢读(它是从磁盘或类似的东西读取)。
为了获得项目的位置,只选择做:
import random
itemstopick = random.Random().sample(range(0,n), k)
如果n,项目数是未知的,那么你必须开始采摘第k个项目(即解决方案如果k = n)。然后,唯一的选择是继续阅读物品,并选择保留刚刚阅读的新物品(并删除另一个物品)或保持当前物品的状态。要坚持一致的概率,您将不得不降低选择最后一个读取项目的概率。保持最后一项的概率应该总是P(k/n0),其中n0是当时n的值。我不相信你能做得比这更好。
如果你知道一些n的大小(值可以保证n大于它),只需要混合上面的两个方法即可。首先用一个用minorant而不是n创建的列表,然后像未知n那样继续。
0
这取决于你是否有随机值生成,如果你这样做,比可能,如果不是你将不得不生成它们,你将需要从2 * k到3 * k左右的操作这种情况下,
0
- 跳过随机数从当前位置的项目列表
- 就拿当前项目。
- 如果您已到达列表的末尾,请跳到列表的开头并转到步骤1
- 重复这些步骤k次。
相关问题
- 1. 从Google表格中的列表中选择随机项目
- 2. 在列表中生成随机项目
- 3. Python:从列表中随机产生的项目只有两个
- 4. 从列表中随机选择比列出的项目更多的选项
- 5. 从列表中拾取随机项目,而不重复
- 6. 如何从列表中获得最多10个随机项目?
- 7. 从Python列表中选择随机项目
- 8. 从角度js列表中随机抽取一个项目
- 9. 从列表中选择一个随机项目,然后删除随机选择的项目中包含相同单词的后续列表项目?
- 10. UL中列表项的随机(项目符号)图像?
- 11. 从字典和随机项目列表中挑选随机列表并将其显示在textBlock中?
- 12. 随机项从条件列表
- 13. XSLT中的随机项目
- 14. Python中的随机列表选项
- 15. 从字典中随机删除项目
- 16. 从JavaScript Object中选择随机项目?
- 17. 从集合中随机返回项目
- 18. 从NSMutableArray中删除随机项目
- 19. 复制和随机化列表中的项目的位置
- 20. 将列表项目随机添加到另一个列表
- 21. 删除列表中的多个随机项目
- 22. 在css中显示随机颜色的列表项目
- 23. 将列表中的一个随机项目转换为大写
- 24. 如何从Excel中的列表中随机选择多个项目?
- 25. 从表中选择随机项目的比例
- 26. 获得一个随机的项目从
- 27. 在Knockout.js中随机化Foreach列表项
- 28. 从词典获取随机项目?不是随机的
- 29. 随机选择从列表
- 30. 随机从一个列表
如果`K> = N`?你会得到所有物品吗? – 2010-11-27 01:25:54
取第一个k,因为你不知道他们是随机的:) – 2010-11-27 01:28:32
n是未知的;然而,假设k <= n成立。前k项不是随机的,它可能是一个排序列表。 – Bob 2010-11-27 01:38:46