我的编码一个棋盘游戏那里有一袋能件。每个回合中,球员去除随机选择件从袋根据某些规则。

对于我的执行,它可以更容易分裂的袋子最初进入水池,用于一个或更多的玩家。这些池会随机选择,但现在不同的球员会被挑选从不同的袋子。这是任何不同吗?

如果一个玩家的袋跑了出来,更多的是随机的混洗到它从一般的库存。

有帮助吗?

解决方案

因此,只要:

  • 该分区进入"池"的袋子是随机的
  • 分配的玩家一定池的袋子是随机的
  • 游戏就是这样,绘制的项目由球员都有效地从袋(永远不会回到袋或任何其他的袋子,为的持续时间当前的游戏)
  • 球员们都不是认知的内容 任何 的包包

这两种方法("原始"有一个很大的共同的袋,"修改"一个游泳池袋每个球员都同等有关的概率。

它只是变得有点棘手对游戏结束时,当一些球员的袋都是空的。公平的来让我们从挑选的100%的项目仍然在发挥作用,因此,他们既挑选从其袋,他们挑选和[盲目的,当然,]选择一个项目从所述的袋子。

这个问题的说明的一个有趣的特点的概率是 概率是相对于数量的知识一个具有有关情况.例如游戏主机的可能知道,"池"袋分配到说放X并不包括任何说一个字母"a"(想着拼字游戏),但只要没有球员知道这个(并且只要该分区进入池袋是完全随机),比赛仍然是公平的,并且播放器"X"仍然要假定他/她可能撞的"一个"下一个时间一个字母是绘, 是一样的,如果所有剩余的信件被提供给他/她。

编辑:
不承受的数学有效性的断言,即这两种程序都是完全相等, 感觉 是一个重要因素, 在游戏,包括一个机会部件(特别是如果游戏,也包括金钱的成分)。为了避免的愤怒玩家谁不明白这个公平,你可以坚持原来的过程...

其他提示

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

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

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top