微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Lua PRNG 结果连续重复数字

如何解决Lua PRNG 结果连续重复数字

我正在尝试选择一个数字,1 或 2。

1 = 鲍勃获胜,2 = 爱丽丝获胜。

当迭代超过 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)鲍勃连续获胜,反之亦然对于爱丽丝?我怎样才能获得更公平的 50/50 结果?两者之间的差价/分布还可以(5036:4964 是可以接受的,而且我会说 50:50 很漂亮)但我个人预计不会超过连续说 5/6..

此外,增加迭代次数确实会改变连胜数(尽管是轻微的),但不会很大。 10,000,000 次迭代平均返回 30-35 的连续性...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。