这可能比 C# 更与数学相关,但我需要一个 C# 解决方案,所以我把它放在这里。
我的问题是关于随机数生成器的概率,更具体地说,是否以相等的概率返回每个可能的值。
我知道有Random.Next(int, int)方法返回第一个整数和最后一个整数之间的一个数字(最后一个是排他的)。
Random.Next()
[无重载] 将返回一个介于 0 和 Int32.MaxValue(即 2147483647)之间的值 - 1,即 2147483646。
如果我想要一个 1 到 10 之间的值,我可以调用Random.Next(1, 11)
来执行此操作,但是 1 到 10 之间的每个值是否具有相同的发生概率?
例如,范围是 10,所以 2147483646 不能完全被 10 整除,所以值 1-6 出现的概率略高(因为2147483646 % 10 = 6
)。这当然是假设Random.Next()
[没有重载] 中的每个值都以相等的概率返回 0 到 2147483646 之间的值。
如何确保一个范围内的每个数字都有相同的出现概率?假设对于彩票类型系统,某些人比其他人拥有更高的概率是不公平的,我并不是说我会为此使用 RNG 中内置的 C#,我只是将其用作示例。