java中有一个扑克系统,它在发牌之前在所有可用的牌上使用Collections.shuffle()

所以 52 张牌 2-9、J、Q、K、A 的 4 种类型的集合。

之后我们 Collections.shuffle()

问题是,似乎(直到现在我们没有大的统计数据,可能我们只看到很多统计推断),算法非常不清楚。

那么,Collections.shuffle() 是否适用于扑克算法?

对评论的回答:
“不清楚”我的意思是它在某个时候非常非常神秘。许多用户提示“它与现场/其他扑克室不同”。
我在这个系统上玩了很多,我必须说,我同意,我在这个系统中看到 3 次皇家闪光在 2000 手以下,并且在现场/在其他扑克室有超过 100.000 手牌我看到 2 直到今天。

最佳答案

如果这是一个严肃的扑克应用程序,钱可以易手,那么简短的回答是否定的。对于这样的事情,你真的应该使用真正随机的硬件源。

稍微长一点的答案是:如果您无法获得用于执行真正随机性的硬件,那么如果您提供 Collections.shuffle(List, Random) SecureRandom 可能就足够了。这个解决方案的棘手部分是找到一个好的种子值。

更新:根据您的澄清,我建议您研究一下如何为 PRNG 播种(假设您已经在使用加密安全实现;如果没有,请先执行此操作)。您不应该使用有限的种子集。其他需要考虑的事项:

  • 你应该为每个游戏实例化一个 PRNG
  • 你应该只在两手牌之间洗牌;从您的问题中得知,您是否还没有在翻牌圈,转牌圈,河牌圈等之间拖曳副牌就不是100%清楚的了。
  • 关于java - Collections.shuffle 适合扑克算法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2715423/

    10-09 04:47