【问题标题】:Algorithm: Maximizing profit in card game with m winning cards and n losing cards算法:在 m 赢牌和 n 牌输牌的纸牌游戏中最大化利润
【发布时间】:2012-12-03 09:47:11
【问题描述】:

假设赌场 (C) 的游戏只涉及一名玩家和一名庄家。该游戏使用 m+n 牌进行,m 标记为获胜牌,'n' 标记为输牌。

游戏规则/信息:

  1. 玩家知道每个阶段的赢牌数量“m”和输牌数量“n”。
  2. 玩家以“X”的数量开始玩游戏,直到所有牌都抽完为止。
  3. 庄家非常聪明,有能力根据玩家在桌上的赌注来抽一张赢牌或输牌。
  4. 每次抽奖都会减少任一类别的牌张数,即如果抽出中奖牌,则中奖牌数变为“m-1”,反之亦然。
  5. 玩家也可以下注“0”金额。
  6. 如果玩家下注“W”金额并抽到一张中奖牌。玩家获得2W作为回报,否则他将失去下注金额

    问题:推导出玩家应该遵循的算法或策略以最大化他的利润。

一些例子:

测试用例 - 1:

Lets say m=0, n=1

玩家知道庄家没有机会,只能让他输掉任何赌注,所以他下注“0”金额。因此,他能做的最大值是X。

测试用例 - 2:

m=1, n=0

玩家知道庄家别无选择,只能抽出唯一的牌,即获胜的牌,因此他下注一切,即“X”并取回“2X”。所以,他以 2 倍的金额退出赌场。

测试用例 - 3:

m=1, n=1 : 

假设玩家下注“W”金额 - 假设庄家抽中奖牌:所以净额 = X+W 和 m->0 和 n->1 :因此在这种情况下最大金额 X+W - 如果庄家抽到失败的牌:所以剩下的净金额 = X-W 和 m->1 和 n->0 :因此,这种情况下的最大金额为 2(X-W)

玩家将选择“W”来最大化他的利润,这只能在 2(X-W)=X+W => W=X/3 的情况下完成

因此,在这种情况下玩家可以走出的最大数量 = 4X/3

【问题讨论】:

  • 对我来说听起来像是动态编程。如果你可以推导出 m=1, n=1,那么做 m=x, n=y 有什么困难,因为它只取决于 m=x-1, n=y 或 m=x, n=y-1 哪一个仅取决于更简单的已知案例。
  • 没错,但没那么容易。当您坐下来开始为它编写代码时,问题就来了?您将通过求解方程以数学方式计算该情况,您可以通过编程方式计算该情况,这同样具有挑战性。我可能不是一个非常擅长编码的人,但我发现编码很困难

标签: algorithm strategy-pattern evolutionary-algorithm


【解决方案1】:

这是来自 F# 的解决方案

建议:除非必须,否则不要进行符号编程。在这种情况下,我们假设 X = 1

let stake = Array2D.zeroCreate 100 100
let bankroll =  Array2D.zeroCreate 100 100

for i in 1 .. 99 do
    stake.[0, i] <- 0.0
    bankroll.[0, i] <- 1.0

for i in 1 .. 99 do
    stake.[i, 0] <- 1.0
    bankroll.[i, 0] <- 2.0

stake.[0, 0] <- 0.0
bankroll.[0, 0] <- 1.0

let rec solve i j =
    if bankroll.[i, j] <> 0.0 then (stake.[i, j], bankroll.[i, j])
    else
       let a = snd (solve (i - 1) j)
       let b = snd (solve i (j - 1))
       let x = (b - a) / (a + b)  // solve (1 + x)a = (1 - x)b
       let y = (x + 1.0) * a
       stake.[i, j] <- x
       bankroll.[i, j] <- y
       (x, y)

solve 10 10 // = (0.06182352702, 1.333333333)

似乎只要赢牌的数量等于输牌的数量,玩家可以获得的最大利润总是4X/3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 2011-08-26
    相关资源
    最近更新 更多