逻辑/概率问题:从包中挑选

时间:2009-11-29 06:12:13

标签: logic probability

我正在编写一个棋盘游戏,其中有一堆可能的棋子。每回合,玩家都会根据一定的规则从包中随机取出随机选择的碎片。

对于我的实施,可能更容易将行李最初分成一个或多个玩家的游泳池。这些游泳池将随机选择,但现在不同的玩家将从不同的行李中挑选。这有什么不同吗?

如果一个玩家的行李用完了,会有更多玩家从一般库存中随机洗牌。

4 个答案:

答案 0 :(得分:5)

只要:

  • 分区为“pool”包是随机的
  • 将球员分配给给定的球包是随机的
  • 游戏是这样的,玩家绘制的物品被有效地从包中取出(在当前游戏期间从未返回包或任何其他包)
  • 玩家并未认识到任何行李的内容

这两种方法(“原始”有一个大的普通包,“修改”,每个玩家一个游泳池包在概率方面是相同的。

在比赛结束时,只有一些球员的球袋是空的时候才会有点棘手。从100%仍然在玩的物品中挑选最公平的,因此,他们应该从他们选择的那个袋子中挑选,并且[当然盲目地]从所述袋子中挑选一件物品。

这个问题说明了概率的一个有趣特征,即概率与人们对情况的知识量相关。例如,游戏主持人可能知道分配给玩家X的“池”包不包括任何说“A”字样(考虑拼字游戏),但只要没有玩家知道这一点(并且只要分区到游泳池袋是完全随机的,游戏仍然公平,玩家“X”仍然必须假设他/她可能在下次绘制一个字母时击中“A”,就像所有剩余的字母一样他/她可以使用。

编辑:
尽管两个程序完全等效的断言的数学有效性, 感知是包含机会组件的游戏中的一个重要因素(特别是如果游戏还包括金钱成分)。为了避免不了解这种公平性的玩家的愤怒,你可能会坚持原来的程序......

答案 1 :(得分:2)

根据游戏规则,@ mjv是对的,初始随机分割不会影响概率。这类似于一个游戏,其中n个玩家从面朝下的牌组依次抽牌:牌组的初始随机分配是随机分成每个玩家的“袋子”。

但是如果你在每次抽奖后替换项目,那么只要有一个或多个包就无所谓了。对于一个包,任何特定项目最终将由具有相同概率的任何玩家绘制。对于许多行李,该物品只能由最初放入行李的玩家绘制。

弹出软件级别,如果游戏需要一个包,我建议只是这样编程:它应该不比n包更难,你不必证明新游戏相当于旧的。

答案 2 :(得分:1)

我的直觉告诉我,将随机的事物集合划分为较小的随机子集将保持同样随机...如果玩家从大型游泳池或较小游泳池中选择(无论如何,将其自身投入到大一点)

对于一个游戏,它足够随机恕我直言!

答案 3 :(得分:0)

取决于安全性的重要程度,它可能没问题(如果涉及到金钱(您或他们),请不要这样做)。从一个无知的球员的角度来看,我并不完全确定它会不那么随意。

a)不要指望他们无知,你的程序可能被破解然后他们会知道会有什么东西出现

b)以不引入漏洞的方式填充行李是非常棘手的。例如,让我们采用天真的算法,即随机选择一个并将其放入第一个桶中,将其取出,然后对第二个桶执行相同操作,依此类推。你只是确保如果有N个棋子,第一个玩家有1 / N的概率选择一个给定的棋子,第二个玩家有1 /(N-1),第三个玩家有1 /(N-3)和等等。然后玩家可以分析已经玩过的棋子,以便弄清楚其他玩家持有某些棋子的概率。

THINK 以下算法可能效果更好,但几乎所有人在第一次提出新算法时都会出现概率错误。不要使用它,只要明白可能涵盖我所谈到的安全漏洞:

  1. 创建N个有序项目的列表并实例化P个玩家
  2. 为每位玩家随机(替换)标记1 / P项目
  3. 重复此操作,直到所有N个项目都被标记并且相同 标记为每个玩家的项目数量(注意:根据N和P,可能需要比你可能生存的时间长得多)
  4. 将适当的项目放入播放器的存储桶中并随机重新排列(不要使用地方交换算法)
  5. 即使这样,在所有这些之后,你仍然可能会有一个漏洞让某人知道漏洞中的内容。坚持使用组合游泳池,随机选择仍然很棘手,但它会让你的生活更轻松。

    编辑:我知道这种声音听起来有些生涩。对于那些可能会在上下文中阅读并尝试其中一些算法的人来说,我大部分都包含了大胆的内容。我真的很希望你: - )

    编辑2:在进一步考虑时,我认为按顺序挑选的问题可能会减少让玩家首先轮流进行。如果规则已经存在,那可能无关紧要。