gpt4 book ai didi

javascript - 如何有效计算游戏平均回合数的数学限制?

转载 作者:行者123 更新时间:2023-12-05 03:22:45 25 4
gpt4 key购买 nike

对于棋盘游戏的赔率计算器,我需要计算一场战斗平均会持续多少轮。因为战斗双方都有失手的可能,理论上一场战斗可以一直持续下去。因此我不能遍历所有分支,而是需要计算一个数学极限。通过模拟器验证,我发现以下函数正确地近似了剩余的平均轮数:

// LIMIT could be any number, the larger it is, the more accurate the result.
const LIMIT = 100;
// r is the number of rounds left if at least 1 of the sides hit
// x is the chance that both sides miss and the round count gets increased,
// but the battle state stays the same.
function approximateLimitForNumberOfRounds(r: number, x: number) {
let approx = r / (1 - x);
// n -> infinity
for (let n = 1; n < LIMIT; n++) {
approx += x ** n;
}
return approx;
}

如何修改此函数以准确计算剩余的轮数,而不是近似计算? (注意由于 x 是一个机会,它包含在 (0, 1)0 < x < 1 中)。

最佳答案

我们可以注意到 approx采用以下值:

r / (1 - x) # I refer to this as 'a' below
a + x
a + x + x^2
a + x + x^2 + x^3
a + x + x^2 + ... + x^n

因此,我们可以将数学表达式简化为:

a + (the sum of x^k from k = 1 to k = n)

接下来,我们必须注意序列x + x^2 + x^3 ...与第一项形成几何序列 x和公比x .自 x0 < x < 1 为界,这将有一个限制金额,即:

x + x^2 + x^3 + ... x^inf = x/(1-x)

(这显然在 x = 1 以及采用 r / (1 - x) 的原始函数中失败,但在那种情况下,您将简单地将总和设为无穷大,而 approx 将逃逸到无穷大如果不是 undefined ;所以我假设在下面的计算中 x != 1x = 1 可以/已经分开处理)。

现在,因为我们有一个表达式 x + x^2 + ...到无穷大,以及 approx 的单个表达式其中包括 x + x^2 + ...那么我们可以写approx使用这两个事实:

approx = r / (1 - x) + x / (1 - x)
approx = (r + x) / (1 - x)

好了!这是您在问题中概述的逻辑的数学等价物,压缩为单个语句(我认为这是正确的:))。

关于javascript - 如何有效计算游戏平均回合数的数学限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72644616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com