【发布时间】:2013-09-18 23:03:22
【问题描述】:
我有一个不断从 rss 提要收集项目的系统。
我只想随机抽取这些项目中的某个百分比,比如 20%。
我的方法是,对于每个项目,我使用 rand(0,100) “掷骰子”,仅当此语句的结果为
这是一个好方法吗?
【问题讨论】:
标签: php random statistics
我有一个不断从 rss 提要收集项目的系统。
我只想随机抽取这些项目中的某个百分比,比如 20%。
我的方法是,对于每个项目,我使用 rand(0,100) “掷骰子”,仅当此语句的结果为
这是一个好方法吗?
【问题讨论】:
标签: php random statistics
你的方法是正确的。但是,随机选择值的标准方法只是从 uniform(0,1) 进行模拟并酌情接受/拒绝。你的伪代码是:
if(unif(0,1) < 0.2)
##Do something
从总共N 条目中选择n 项目后,您一直在使用参数N 和p=0.2 从Binomial distribution 中采样。例如,如果N=10000,那么您将选择(平均)N*p=10000*0.2=2000 项目。但是,差异将为:N*p*(1-p) = 1600。所以选择之间的任何地方
(2000 - 2*sqrt(1600), 2000 + 2*sqrt(1600)) = (1920, 2080)
应该是合理的。
【讨论】:
如果你确定你的随机是真正随机的,那么是的,这是一个非常好的方法。
请注意,做一个随机的 0、5 可能更容易,并且只在它是 1 时才接受它(同样的效果,20% 是 100 的 1/5)。这样你的分布就会更窄。虽然,这需要一个整数舍入,这是一个额外的操作。
【讨论】: