仅随机获取连续输入的 20%


Get only random 20% of consecutive inputs

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

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

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

这是一个好方法吗?

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

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

你的方法是正确的。但是,随机选择值的标准方法只是从统一(0,1)模拟并根据需要接受/拒绝。然后,您的伪代码是:

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

从总共 N 个条目中选择 n 个项目后,您已经从具有参数 Np=0.2 的二项分布中采样。例如,如果N=10000 ,则您(平均)选择了N*p=10000*0.2=2000项。但是,差异将为:N*p*(1-p) = 1600 。所以在以下任何地方选择

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

会合理。