[英]Stop randomize from picking same string in array twice in Java
码
Random Randomizer = new Random () ;
cardoneA = suits[Randomizer.nextInt(suits.length)];
cardoneAv = ranks[Randomizer.nextInt(ranks.length)];
如何阻止随机发生器两次选择相同的纸牌? 例如。 如果它选择了某种西装和等级,如何阻止它再次选择呢? 另外,我如何才能使其同时选择这两个卡,以便它可以选择另一张相同价值的卡,只要它的类别不同?
就像在现实生活中那样模拟一副纸牌:
该算法也称为Fisher-Yates Shuffle 。
您不能阻止随机化器多次返回相同的索引。 您需要保留已选择哪些牌的列表(西服指数和等级指数的组合),并循环选择新的随机指数,一直循环直到获得尚未选择的牌。
与其跟踪您尚未选择的卡,不如跟踪您尚未选择的卡,并随机分配数字以在您尚未选择的卡中进行选择。
您是否在尝试洗牌?
如果是这样,则单行语句list.add(list.remove(n));
其中n是从0到list.size() - 1
的随机数。 重复此操作约500次,以得到不错的洗牌效果。 这是一种常见的洗牌; 取出一张随机卡片,放在顶部。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.