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 播种(假设您已经在使用加密安全实现;如果没有,请先执行此操作)。您不应该使用有限的种子集。其他需要考虑的事项:
关于java - Collections.shuffle 适合扑克算法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2715423/