【问题标题】:Getting a uniform probability distribution with limited means [duplicate]以有限的手段获得均匀的概率分布[重复]
【发布时间】:2013-10-13 04:09:29
【问题描述】:

假设您有一枚硬币,并且您想以相同的概率在 3 个(或更多)数字之间进行随机选择。如果你只是为每一对掷硬币,那么你给了第一轮的幸存者两次失败的机会,并且分布不均匀。

通常,您有一个函数 Random(0,1),它以 0.5 的概率返回 0,以 0.5 的概率返回 1。使用此函数,生成 Random(a,b),它以相等的概率返回 [a,b] 范围内的任何整数。

有什么想法吗?

【问题讨论】:

    标签: probability random-sample


    【解决方案1】:

    在给定 Random(0, 1) 的情况下生成 Random(0,3) 更容易。 Random(0, 3) 可以通过连续两次抛硬币来模拟生成四个桶:00、01、10、11。

    一般来说,给定 Random(0, 1) [即一枚公平的硬币]。任何其他 Random(0, n) 都将难以生成,并且不是真正的“随机”——因为您必须预先确定要考虑属于“其他”存储桶的结果数量。

    你可以像这样几乎是假的随机(0,2)(类似 Ruby 的伪代码):

    options = ['h', 't', 'n']       # heads, tails, neither
    hash = {'h' => 0, 't' => 0, 'n' => 0}    # number of 'heads', 'tails', 'neither'
    rand = options[random(0, 1)]
    rand = 'n' if (hash[rand] % 3 == 2) # every third 'h' or 't' is an 'n'
    hash[rand] ++ # update buckets
    

    同样,这不是“随机的”,因为每三个头部或尾部都被认为是“两者都不是”。

    更新:请参阅相关问题以获得更优雅的答案。 Creating a random number generator from a coin toss

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-22
      • 2011-08-22
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 2014-06-14
      • 2013-04-14
      相关资源
      最近更新 更多