【发布时间】:2011-03-19 01:48:09
【问题描述】:
这更像是一个数学/一般编程问题,但我用 PHP 编程是有区别的。
我认为最简单的解释方法是举个例子。
如果范围在 1 到 10 之间。
我想生成一个介于 1 到 10 之间但更可能低于高的数字。
我能想到的唯一方法是生成一个数组,其中 10 个元素等于 1,9 个元素等于 2,8 个元素等于 3.....1 个元素等于 10。然后根据元素的数量。
问题是我可能要处理 1 - 100000 并且该数组会大得离谱。
那么如何做到最好呢?
【问题讨论】:
-
不,它不会破坏目的。他只是想将均匀密度映射到另一个分布,这在蒙特卡洛应用中很常见。 @OP:能否请您提供一个分发功能?
-
@Woot:你对“随机”的理解是什么?随机变量具有分布函数。而且分布很少是线性的。
-
不过,他并没有“强迫”任何一个结果。他只是比其他人更有可能获得某些结果。可以这样想:我有一个袋子,里面有 15 张卡片。五张卡片上写着“1”,四张写着“2”,三张写着“3”,两张写着“4”,一张写着“5”。我从袋子里随机抽一张牌。结果仍然是随机的,但我得到 1(低数字)的可能性是得到 5(高数字)的可能性的五倍。我没有强求任何结果,但我确实将随机结果更偏向于低数字。
-
或者只是掷一对骰子。您获得 7(概率 6/36)的可能性是获得 1 或 12(概率 1/36)的 6 倍,但是对于多个应用程序,这被认为是随机的。 :-)
-
掷两个骰子不是不可能得到1吗?