Lua PRNG结果连续出现数字

我正在尝试挑选数字,要么是1,要么是2。

1 = bob赢,2 = alice赢。

在10000次尝试中迭代时,似乎有高频的连续重复数字,比如1连续重复15-20次。这看起来不对,这太高了吗?

示例代码:

local bobWins = 0
local aliceWins = 0

local bobWinStreak = 0
local aliceWinStreak = 0

local bobHighestStreak = 0
local aliceHighestStreak = 0

local lastWinner = ""

for i=1,10000 do
  local num = math.random(1,2)

  if num == 1 then winner = "bob" else winner = "alice" end

  if winner == "bob" then
    bobWins = bobWins + 1
    if lastWinner == "bob" then
        bobWinStreak = bobWinStreak + 1
        aliceWinStreak = 0

        if bobWinStreak > bobHighestStreak then
          bobHighestStreak = bobWinStreak
        end
    end
  else
    aliceWins = aliceWins + 1

    if lastWinner == "alice" then
        aliceWinStreak = aliceWinStreak + 1
        bobWinStreak = 0

        if aliceWinStreak > aliceHighestStreak then
          aliceHighestStreak = aliceWinStreak
        end
    end
  end

  lastWinner = winner
end
print("BOB WINS: " .. bobWins,"BOB HIGHEST STREAK: " .. bobHighestStreak)
print("ALICE WINS: " .. aliceWins, "ALICE HIGHEST STREAK: ".. aliceHighestStreak)

示例输出:

BOB WINS: 5036  BOB HIGHEST STREAK: 25
ALICE WINS: 4964    ALICE HIGHEST STREAK: 19

在给定示例中,15-20(25)次bob赢和alice赢相对应是正常的吗?如何实现更公平的50/50结果?两者之间的差距/分布是可接受的(5036:4964是可容忍且相当50:50的),但个人认为不应该期望更多的连续胜利,比如5/6次。此外,增加迭代次数会改变连胜次数(虽然略微),但变化不大。1000万次迭代平均返回30-35次连胜...

点赞