【发布时间】:2010-10-28 22:55:04
【问题描述】:
我是一名网络游戏开发人员,我遇到了随机数问题。假设一个玩家有 20% 的机会用他的剑造成致命一击。这意味着,五分之一的命中应该是关键的。问题是我在现实生活中得到了非常糟糕的结果——有时玩家在 5 次命中中获得 3 个暴击,有时在 15 次命中中没有。战斗时间很短(3-10 次命中),因此获得良好的随机分布很重要。
目前我使用 PHP mt_rand(),但我们只是将代码转移到 C++,所以我想在我们游戏的新引擎中解决这个问题。
我不知道解决方案是否是某种统一的随机生成器,或者可能要记住以前的随机状态以强制正确分布。
【问题讨论】:
-
假设真实随机数,大约有 0.5% 的几率恰好发生 3 个重击和 2 个非重击,以及 3.5% 的几率连续发生 15 个非重击。
-
+1 以上。随机数的一个特点是会出现异常值。
-
@Nixus:不,大约有 5% 的几率会造成 3 次暴击和 2 次非暴击,你忘记乘以 (5! / (3!*2!)) = 10。在 95% 的置信水平下,5 次打击中发生 3 次重击在统计上并非不可能。
-
起初我认为这是一个愚蠢的问题......再一次,我被 SO 弄丢了。