【发布时间】:2009-11-29 06:12:12
【问题描述】:
我正在编写一个棋盘游戏,其中有一袋可能的棋子。每回合,玩家根据一定的规则从袋子中随机取出棋子。
对于我的实施,最初将袋子分成一个或多个玩家的池可能更容易。这些池将是随机选择的,但现在不同的玩家将从不同的袋子中挑选。这有什么不同吗?
如果一个玩家的包用完了,更多的包会从一般储备中随机洗入。
【问题讨论】:
标签: logic probability
我正在编写一个棋盘游戏,其中有一袋可能的棋子。每回合,玩家根据一定的规则从袋子中随机取出棋子。
对于我的实施,最初将袋子分成一个或多个玩家的池可能更容易。这些池将是随机选择的,但现在不同的玩家将从不同的袋子中挑选。这有什么不同吗?
如果一个玩家的包用完了,更多的包会从一般储备中随机洗入。
【问题讨论】:
标签: logic probability
只要:
这两种方法(“原始”使用一个大的普通袋子,“修改”每个玩家一个台球袋在概率方面是等效的。
只有在游戏快结束时,当一些玩家的包是空的时,它才会变得有点棘手。从 100% 仍在播放的物品中挑选最公平的方法,因此,他们应该从他们挑选的袋子中挑选,并且 [当然,盲目地] 从所述袋子中挑选一件物品。
这个问题说明了概率的一个有趣特征,即概率与一个人对情况的了解程度有关。例如,游戏主机可能很清楚分配给玩家 X 的“池”包不包含任何说字母“A”(考虑拼字游戏),但只要没有玩家知道这一点(并且只要池袋中的分区是完全随机的),游戏仍然公平,玩家“X”仍然必须假设他/她在下一次抽取字母时可能击中“A”,就好像所有剩余的字母一样他/她可以使用。
编辑:
尽管两个过程完全等价的断言在数学上是正确的,感知在包含机会组件的游戏中是一个重要因素(特别是如果游戏还包含金钱成分)。为了避免不了解这个公平性的玩家的愤怒,你可以坚持原来的程序......
【讨论】:
根据游戏规则,@mjv 是对的,初始随机划分不会影响概率。这类似于 n 名玩家从面朝下的牌组中轮流抽牌的游戏:牌组的初始洗牌是随机分成每个牌手的牌“袋”。
但是,如果您在每次抽奖后更换物品,那么是一袋还是多袋都没有关系。对于一个袋子,任何特定物品最终都会被任何玩家以相同的概率抽到。对于许多袋子,该物品只能由最初放置它的袋子的玩家抽取。
弹出到软件级别,如果游戏需要一个袋子,我建议直接这样编程:它应该不会比 n 个袋子更难,而且你不必证明新游戏相当于旧的。
【讨论】:
我的直觉告诉我,将随机集合划分为更小的随机子集将保持同样随机......无论玩家从大池还是从较小池中挑选(反过来,将自己喂入大一)
对于游戏,恕我直言,随机就足够了!
【讨论】:
根据安全性的重要性,这可能没问题(如果涉及金钱(您或他们),请不要这样做)。从一个无知的玩家的角度来看,我不完全确定它会不会那么随机。
a) 不要指望他们无知,你的程序可能会被破解,然后他们就会知道接下来会出现什么问题
b) 以不引入漏洞的方式填充袋子是非常棘手的。例如,让我们采用随机挑选一个并将其放入第一个桶中的朴素算法,将其取出,然后对第二个桶做同样的事情,依此类推。您只需确保如果有 N 个棋子,第一个玩家选择给定棋子的概率为 1/N,第二个玩家有 1/(N-1),第三个玩家有 1/(N-3) 和很快。然后玩家可以分析已经玩过的棋子,以确定其他玩家持有某些棋子的概率。
我认为以下算法可能效果更好,但几乎所有人在第一次提出新算法时都会出错。不要使用这个,只要理解它可能涵盖了我谈到的安全漏洞:
即使在这一切之后,您仍然可能有一个漏洞,有人可以通过漏洞利用找出他们存储桶中的内容。坚持使用组合池,随机选择仍然很棘手,但它会让您的生活更轻松。
编辑:我知道语气听起来有点生涩。对于那些可能会断章取义并尝试其中一些算法的人,我主要包括了所有这些大胆的内容。我真的希望你好:-)
编辑 2:进一步考虑,我认为按顺序选择的问题可能会减少到让玩家轮流摆在首位。如果这已经在规则中,那可能没关系。
【讨论】: