0

我有一个不断从 RSS 提要收集项目的系统。

我只想随机抽取这些项目中的一定百分比,比如 20%。

我的方法是,对于每个项目,我使用 rand(0,100) “掷骰子”,并且仅当该语句的结果小于 20 时才接受该项目。

这是一个好方法吗?

4

2 回答 2

1

你的方法是正确的。但是,随机选择值的标准方法只是从 uniform(0,1) 进行模拟并酌情接受/拒绝。你的伪代码是:

if(unif(0,1) < 0.2)
   ##Do something

从所有条目中选择n项目后N,您一直在使用参数和的二项式分布进行抽样。例如,如果,那么您将选择(平均)项目。但是,方差将为:。所以选择之间的任何地方Np=0.2N=10000N*p=10000*0.2=2000N*p*(1-p) = 1600

(2000 - 2*sqrt(1600), 2000 + 2*sqrt(1600)) = (1920, 2080)

会是合理的。

于 2013-09-14T11:21:28.163 回答
1

如果您确定您的随机是真正随机的,那么是的,这是一个非常好的方法。

请注意,随机 0、5 可能更容易,并且仅在为 1 时才接受它(同样的效果,20% 是 100 的 1/5)。这样你的分布就会更窄。虽然,这需要对整数进行舍入,这是一项额外的操作。

于 2013-09-14T09:20:18.473 回答