【问题标题】:What are the chances of getting 100 using mt_rand(1,100)?使用 mt_rand(1,100) 获得 100 的机会有多大?
【发布时间】:2015-02-02 05:44:31
【问题描述】:

我想知道使用 mt_rand(1,100) 获得 100 的机会有多大? 机会是1-100吗?这是否意味着如果我“滚动”100 次,我将至少获得 100 次?

我一直在想这个问题,但我找不到任何解决方案。 我想知道的原因是因为我试图计算我必须滚动多少次才能获得 100 次保证。

<?php
$roll = mt_rand(1,100);
echo $roll;
?>

问候丹尼斯

【问题讨论】:

  • 这不是我想要的 =/
  • 在这种情况下无法保证答案。你只能说有一定的概率会在序列中找到 100 个。
  • 好的,这个问题没有数学答案?

标签: php math


【解决方案1】:

机会是 1-100 吗?这是否意味着如果我“滚动”100 次,我将至少获得 100 次?

不,这不是随机数生成器的工作方式。举个极端的例子:

mt_rand(1, 2)

人们会假设在 足够长 的时间范围内,1 的数量和 2 的数量将是相同的。但是,完全有可能获得 10 个连续 1 的序列。仅仅因为它是随机的,并不意味着特定的数字必须出现,如果是这样,它就不再是随机的了。

我正在尝试计算我必须滚动多少次才能获得 100 次保证。

从数学上讲,没有任何数字保证在序列中。如果每个掷骰都是独立的,则有99/100 的可能性不会为 100。

对于两卷,这是(99/100)^2 或 98% 的可能性。对于 100 次滚动,您不会在该组中滚动一个 100 的可能性约为 37%。实际上,您需要以 230 个为一组进行滚动,以使该组中没有 100 个的几率低于 1%。

【讨论】:

  • 我实际上认为在很长一段时间内结果将与您的示例几乎相同。感谢您的信息!
【解决方案2】:

调用这个函数得到 100 的概率是 1/100,但是当你调用 100 次时不能保证得到 100。您必须占用更大的样本空间。例如:如果你调用这个函数 100,000,000 次,很有可能会找到 100 次 100,000 次。

如果您让我们更详细地了解您的用例,可以更好地回答这个问题。

【讨论】:

  • 我实际上只是想知道是否有保证让我们说如果你滚动 2304 次你应该得到至少 100 一次,因为这就是 mt_rand 的工作原理,但事实证明并非如此
  • 不能保证会发生这种情况,这就是概率和 mt_rand 的工作方式。对于您的情况, 2304 不够大。没有真正的随机生成器实现,我们只能更接近真正的随机性。
  • 您能否告诉我们为什么您需要在现实世界的场景中保证这一点?
  • 我在网上玩了很多赌场,我一直想知道如果你使用 mt_rand 的话,如果它是 1 到 100 的几率是多少。
  • 这个概率在更大的样本空间下效果很好,所以如果你赌一个数字,赢得轮盘赌的概率是1/36,玩家玩100场后可能连一次都赢不了,但是,如果您看到所有玩家在一天内进行的所有赌注的这个数字,那么玩家每 36 次旋转至少会赢一次。因此,在更大的样本空间上是正确的。我在真钱赌场游戏工作了 5 年,所以我很了解 ;) 顺便说一句,你在玩什么游戏?
【解决方案3】:

从 100 卷中得到 1 卷只是一种解释它的统计方式。虽然有 1%(表示 100 分中的 1 分),但这并不意味着您真的会得到 1 分中的 100 卷。这是一个机会问题。

【讨论】:

  • 是的,我开始明白了,呵呵。感谢您的回答。
【解决方案4】:

mt_rand 使用 Mersenne Twister 生成伪随机数,即uniform distributed。因此,如果您设置了最小值和最大值,它应该(很可能)也是均匀分布的。

所以:您只能谈论在给定范围内获得数字的可能性,以及在获得特定数字或范围内的所有数字之前的预期尝试次数。

这意味着:不能保证给定的数字编号至少会获得一次特定的数字。

【讨论】:

  • 我明白了。但理论上 (mt_rand(0, 1) === 0) 是 50% 的机会?
  • 那么 (mt_rand(0, 100) === 0) 的几率是 1%?
  • 那种。 (0 到 100 是 101 个元素)预期的尝试次数是 100,但你不能确定你真的得到了数字。
  • 好吧,我不明白。如果 0,100 是 101 个元素,那它怎么可能是 1%?这是否意味着 (mt_rand(0, 2) === 0) 有 25% 的机会??
  • 0,1 是 2 个元素,0,100 是 101 个元素,所以略小于 1%。我以为你的意思是 0,99,所以它是 100 个元素范围,而且数字更容易写。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-28
  • 2015-02-02
  • 1970-01-01
  • 2020-10-19
  • 1970-01-01
  • 2014-06-28
相关资源
最近更新 更多