我有一个系统可以不断从rss Feed中收集项目。
我想随机选择这些项目中的一定百分比,比如说20%。
我的方法是,对于每个项目,我使用rand(0,100)“掷骰子”,并且仅当该语句的结果为<时才接受该项目。 20。
这是一个好方法吗?
答案 0 :(得分:1)
如果你确定你的随机是真正的随机,那么是的,这是一个非常好的方法。
请注意,随机0,5可能更容易,只有当它为1时才接受它(相同的效果,20%是100的1/5)。你会以这种方式进行更窄的分配。虽然,这需要一个舍入到整数,这是一个额外的操作。
答案 1 :(得分:1)
你的方法是正确的。但是,随机选择值的标准方法只是从统一(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)
是合理的。