首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Collections.shuffle适用于扑克算法吗?

Collections.shuffle适用于扑克算法吗?
EN

Stack Overflow用户
提问于 2010-04-26 17:17:32
回答 7查看 3.1K关注 0票数 4

在java中有一个扑克系统,它在所有可用的卡片上使用Collections.shuffle(),然后再处理这些卡片。

所以收集了52张2-9,J,Q,K,A四种类型的卡片.

在那之后,我们Collections.shuffle()

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

那么,Collections.shuffle()可以使用扑克算法吗?

对评论的回答:“不清楚”,我的意思是它在某个时候非常神秘。许多用户抱怨说,“这和生活/其他厕所不一样”。我玩了很多这个系统,我必须说,我同意,我看到3个皇家手电筒在2000年在这个系统中玩手和生活/在其他厕所与超过100.000玩手,我看到2到今天。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-04-26 17:23:43

如果这是一个严肃的扑克应用,在那里钱可以换手,简短的回答是不。对于这种情况,您应该真正使用真正随机性的硬件源。

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

更新:基于您的澄清,我建议您研究如何播撒PRNG (假设您已经在使用加密安全实现;如果没有,则先这样做)。你不应该使用有限的种子。其他需要考虑的事项:

  • 您可能应该为每个游戏实例化一个PRNG。
  • 你只应该在两只手之间洗牌;从你的问题来看,并不是100%清楚的是,你没有在翻船、转弯、河流等之间洗牌。
票数 9
EN

Stack Overflow用户

发布于 2010-04-26 17:25:13

Collection.shuffle使用Fisher-Yates改组算法的O(n)实现。

随机索引是用Java的标准PRNG选择的,所以它将是大致一致的:每一次洗牌都和其他的一次一样可能。

这对于您想要做的事情是可以的,但是当您想要真正的随机化时,您应该引入一些真正的随机因素(比如用来为随机数生成器添加种子的System.currentTimeMillis() ),或者一些更可实现的东西,比如专门的硬件。

票数 6
EN

Stack Overflow用户

发布于 2010-04-26 17:20:54

好吧,我一般不喜欢别人这样对我说,但是是和不是。它和(1,52)之间的随机卡差不多,当涉及到随机性时使用rand()函数。

没有一部分是,对于任何处理机会或随机值,你需要适当的硬件,一个普通的计算机甚至不能远程产生一个真正的随机结果的任何类型。

编辑:如果你的游戏系统是为了好玩,这是一回事,但当涉及到金钱,人们会绞死你创造随机结果的方式。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2715423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档