【问题标题】:Get only random 20% of consecutive inputs仅获取随机 20% 的连续输入
【发布时间】:2013-09-18 23:03:22
【问题描述】:

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

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

我的方法是,对于每个项目,我使用 rand(0,100) “掷骰子”,仅当此语句的结果为

这是一个好方法吗?

【问题讨论】:

    标签: php random statistics


    【解决方案1】:

    你的方法是正确的。但是,随机选择值的标准方法只是从 uniform(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)
    

    应该是合理的。

    【讨论】:

    • 是的,我认为 rand 提供了一个统一的分布,我的试验证明了这一点。 Hwr 包括方差的概念,给 rand() 的范围 N 的数量,大大降低了 CI 的 SE。即使样本的 N 保持不变,这也会以某种方式降低 SE。我想这是因为 rand() 只返回整数,因此偏向分布。实际上,我的问题可以简化为询问 rand() 是否从制服返回真正的值。答案可能是,如果你扩大范围,这会变得越来越正确?
    • 不要使用 rand。只需生成连续的随机数。有关详细信息,请参阅此问题和链接stackoverflow.com/questions/14155603/…
    • ehm 您链接了页面的哪一部分? hwr 我现在正在使用 mt_rand。
    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的回答。我也尝试了 0 到 10 和 2,但不知何故,我总是得到超过 20% 的结果(我尝试创建一个长数组并使用所述条件语句从中过滤另一个数组)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 2017-01-22
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多