如何在循环中记录连胜-赔率计算器



我在做一个赔率计算器。我想打印出一个球员的最高连胜记录,以及连胜平均记录。

我指的连胜是指在对手赢1次之前,玩家连续赢了多少次,反之亦然。

我是40% vs 60%的赔率供参考。

while (nFlip <= 99) do
    nFlip = nFlip + b 
    if math.random(0,4) < 2 then
        countPlayer = countPlayer + b
--!!!!! How to record player streak and player average
        print( "Player Wins" )
    elseif math.random(0,4) < 3 then
        countHouse = countHouse + b
 --!!!!! How to record player streak and player average
        print( "House Wins" )
    end
end

如果连胜的定义是连续获胜的次数,那么计算它,并存储在一个表中。

local playerStreak = 0
local houseStreak = 0
local playerStreaks = {}
local houseStreaks = {}
local nFlip = 0
math.randomseed(os.time())
while nFlip <= 99 do
    nFlip = nFlip + 1
    local r = math.random()
    local playerWinProb = 0.4
    if r < playerWinProb then -- player wins!
        playerStreak = playerStreak + 1
        if houseStreak > 0 then -- house won last, end of its streak
            table.insert(houseStreaks, houseStreak)
            houseStreak = 0
        end
        -- print( "Player Wins" )
    else
        houseStreak = houseStreak + 1
        if playerStreak > 0 then -- house won last, end of its streak
            table.insert(playerStreaks, playerStreak)
            playerStreak = 0
        end
        -- print( "House Wins" )
    end
end
table.sort(playerStreaks)
print('largest player streak:', playerStreaks[#playerStreaks])
table.sort(houseStreaks)
print('largest house streak:', houseStreaks[#houseStreaks])

在所有的投掷之后,你可以计算统计:

  • 对于最大的球员连胜,搜索playerStreaks的最大值(我很懒,使用排序代替,不是那么有效,但也不坏);同样,对于最大的房屋间距
  • 为平均值,将所有球员的连胜记录相加并除以#playerStreaks;类似于house streak
  • 等。

最新更新