我已經閱讀了很多有關該主題的內容,但我仍然對此感到疑慮。 請幫忙!在Java中洗牌一套
我創造的52張一副撲克牌:
int[] deck = new int[52];
for (int i = 0; i < deck.length; i++) {deck[i] = i;}
現在,我想正確的洗牌,而不是按照任何圖案或功能。
我將使用的Math.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;
}
我有這裏的問題,然而,就是我有時可能會重複;結果,一些卡/值完全丟失。
我幾乎可以肯定,我沒有放棄我已經使用過的指數/數值,這可能是上述問題的核心。但我該怎麼辦呢?
有什麼建議嗎?可能的話,遵循我的思路。謝謝一堆!
重複? j的重複值?我和j?什麼? –
我隨機生成和/或已分配的副本 –
您能向我們展示一個重複輸出的例子嗎?代碼中似乎沒有任何錯誤會產生重複。所以也許你對重複測試的方式是錯誤的。 –