0

我相信你们中的许多人都听说过一个叫做崩溃的游戏。一些流行的例子是 satoshi,bustabit。

解释起来非常复杂,所以我将开始假设您熟悉它。

无论如何,我的目标是按照这些思路重新创建一些东西。我想做一个函数,它会给我一个介于 1 到 100 之间的指数分布双 PRNG。

基本上,一个介于 1 和 100 之间的随机双倍,其中在 1 附近获得双倍的概率比在接近 100 时获得双倍的可能性更大。

到目前为止,我一直在尝试一些东西,但我真的无法弄清楚这一点。任何关于如何实现这一点的见解将不胜感激。

4

1 回答 1

0

您可以使用偏置函数来实现此目的。

public static void main(final String[] args) {
    double sum = 0;
    for (int i = 0; i < 100; i++) {
        final double x = Math.random();
        sum += biasFunction(x, 0.7);
    }
    System.out.println(sum);
}

public static double biasFunction(final double x, final double bias) {
    // Adjust input to make control feel more linear
    final double f = Math.pow(1 - bias, 3);
    return (x * f) / (x * f - x + 1);
}

你增加的偏差越多,你的结果就越会反对零。您也可以将函数的结果乘以 100,而不是取平均值。

看看这个可视化。

于 2020-07-13T18:04:29.793 回答