只获得20%的连续输入

时间:2013-09-14 09:15:36

标签: php random statistics

我有一个系统可以不断从rss Feed中收集项目。

我想随机选择这些项目中的一定百分比,比如说20%。

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

这是一个好方法吗?

2 个答案:

答案 0 :(得分:1)

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

请注意,随机0,5可能更容易,只有当它为1时才接受它(相同的效果,20%是100的1/5)。你会以这种方式进行更窄的分配。虽然,这需要一个舍入到整数,这是一个额外的操作。

答案 1 :(得分:1)

你的方法是正确的。但是,随机选择值的标准方法只是从统一(0,1)和接受/拒绝模拟。那么你的伪代码就是:

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

从总共n个条目中选择N项后,您已使用参数Np=0.2Binomial distribution中提取样本。例如,如果N=10000,那么您将选择(平均)N*p=10000*0.2=2000个项目。但是,差异将是:N*p*(1-p) = 1600。所以选择

之间的任何地方
(2000 - 2*sqrt(1600), 2000 + 2*sqrt(1600)) = (1920, 2080)

是合理的。