2017-10-21 263 views
-1

在线二十一点游戏使用什么样的洗牌方法?他们是否在代码中保留了一张牌的“牌组”,或者简单地把每一手牌作为一组全新的新秀从随机选出来?在线二十一点游戏如何洗牌?

+1

那么它不会是大酒杯,如果每手完全是新的,所以就必须是一个模拟的“鞋“的甲板。它是如何模拟的实现细节。最自然的事情是提前做一次Fisher-Yates洗牌,但这只是猜测,因此有点基于观点,也过于宽泛。虽然这是一个有趣的问题,但我认为这不是真正的主题。此外,您的问题似乎假定所有网站使用相同的方法。为什么这应该是真的? –

+0

你没有要求它,但我提到它:他们将使用(1)外部熵(物理测量;也许与站点有关的时间/用户行为,尽管不是后者)(2)cryptoPRNGs。 - 其余依赖于游戏;但是如果需要洗牌,Fisher-Yates非常棒(给出一些随机比特)。 – sascha

+0

那些正确的*会正确地模拟一个装满阵列卡牌的甲板或鞋子,使用超过240位状态的良好RNG,使用缩小采样使其在鞋子尺寸上保持均匀,再加上合适的当剩下大约15%的牌时,费希尔 - 耶茨重新洗牌,以正确模拟实际的赌场实践。我猜测只有不到10%的软件二十一点游戏能够正确完成所有这些。 –

回答

0

这取决于很多谁是游戏制造商和他们使用什么样的编程语言。想象一下,每次你创建新的卡片对象时,即使在这种情况下,你也需要洗牌。良好的洗牌算法是非常重要的,如果制造商是不够熟练它将使用算法像this one

var rand = new Random(); 
for (int i = cards.Length - 1; i > 0; i--) { 
    int n = rand.Next(i + 1); 
    int temp = cards[i]; 
    cards[i] = cards[n]; 
    cards[n] = temp; 
}