我正在编写一个代码,看在一个多轮游戏的选择游戏。有四个选项(A、B、C、D)和四个支付池(池1、池2、池3和池4)。每轮都有一个选择。每个选项分配到一个池(A-池1等)。你知道吗
我想随机洗牌池一旦6个选项中有5个是相同的(例如AAABAA或BCBBBB->;例如,将池1更改为除池1以外的任何其他选项)。此外,每20轮应该有一次自动洗牌,以确保即使6次选择5次都没有选择,池仍然会改变。你知道吗
目前,我已经将其编码为在连续5次(连续5次选择)之后池会发生变化。我只是不想在每20轮就有5/6的选择(已经完全相同)和一次改变之后,让泳池改变,而且有时同一个泳池又会被随机选择,这是我不想要的。你知道吗
if (streak % 5) == 0 :
pools = [pool_1, pool_2, pool_3, pool_4]
random.shuffle(pools)
work1 = pools[0]
work2 = pools[1]
work3 = pools[2]
work4 = pools[3]
任何帮助都很感激-谢谢!你知道吗
条纹跟踪
要确定最后六个选项中的五个是否相同,可以使用deque来跟踪最后N个选项。你应该把limit the size改成6。无论何时做出选择,都要将选择附加到您的文档中。你知道吗
在附加选项之后,根据您的需求做一个Counter,以确定每个选项已经做了多少次。筛选只包含值为5或更多的键(最多应该有一个!)如果有的话,在过去的六次试验中已经做了五次选择。你知道吗
然后,您可以使用Python将空字典处理为False来提取有问题的选择,并在出现连串时执行洗牌:
对抗性洗牌
对于不完全随机的洗牌,其中一个特定的元素(有条纹的元素)保证没有一个特定的最终位置(它的原始位置),假设你真的只处理少量的选择,你基本上可以使用一个bogosort和一个非常宽松的“顺序”标准:
每次通过,你有六分之一的机会得到需要重新洗牌的坏洗牌,所以在N次迭代之后,你只有6^N的机会需要继续进行。理论上它可能永远持续下去,但是除非你的RNG倾向于讨厌那些exploding dice的游戏,否则它应该很快终止。你知道吗
您可能会注意到,我假设
pool
是一个以选项为键的字典,而不是您得到的列表。但不用担心:shuffling dictionary keys是可行的。你知道吗相关问题 更多 >
编程相关推荐