使用 mt_rand(1,100) 得到 100 的机会有多大?

What are the chances of getting 100 using mt_rand(1,100)?

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

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

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

问候丹尼斯

Are the chances 1-100? does that mean I'll get atleast 100 once if i "roll" 100 times?

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

mt_rand(1, 2)

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

I'm trying to calculate how many times I have to roll in order to get 100 guaranteed.

从数学上讲,不存在 保证 100 在序列中的数字。如果每个卷都是独立的,则有 99/100 的机会 不会 为 100。

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

调用此函数得到100的概率是1/100,但调用100次不保证一定能得到100。你必须采取更大的样本 space。例如:如果您调用此函数 100,000,000 次,则很有可能会找到 100 次 100,000 次。

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

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

mt_rand uses the Mersenne Twister to generate pseudo random numbers, that are said to be uniform distributed。因此,如果您设置最小值和最大值,它应该(很可能)也是均匀分布的。

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

这意味着:不能保证给定号码至少获得一次特定号码。