算法在Java中洗牌一副牌
关于这个话题,我读了很多东西,但我仍有疑虑。 求求你,救命
我制作了一副52张卡片:
int[] deck = new int[52];
for (int i = 0; i < deck.length; i++) {deck[i] = i;}
现在,我想正确地洗牌,而不是遵循任何模式或功能
我要用数学。我的算法中的random()方法:
for (int i = 0; i < deck.length; i++) {
int j = (int)(Math.random() * deck.length); // Get a random index out of 52
int temp = deck[i]; // Swap the cards
deck[i] = deck[j];
deck[j] = temp;
}
然而,我在这里遇到的问题是,有时我可能会得到重复的;因此,一些卡片/价值观完全缺失
我几乎可以肯定,我没有放弃我已经使用过的索引/值,这可能是上述问题的核心。但我该怎么做呢
有什么建议吗?可能是按照我的思路。非常感谢
# 1 楼答案
只需为洗牌的牌使用一个新的阵列,并使用从先前阵列中移除的随机牌填充它
或者直接使用
Collections.shuffle()
: