2015-03-02 60 views
-3

以下代碼在遊戲中洗牌。我必須解釋代碼在演示文稿中的作用。我在Java代碼是新手,所以任何人都可以請行給我解釋一下下面的代碼行:任何人都可以請給我解釋下面的Java代碼?

// Deck shuffling method 
public void shuffleDeck() { 
    //Seed the Random instance with nanoTime 
    Random random = new Random(System.nanoTime()); 
    for(int i = 0; i < 52; i++) { 
     int swapIndex = random.nextInt(52); 
     if (swapIndex != i) { 
      PlayingCard temp = cardDeckArray[i]; 
      cardDeckArray[i] = cardDeckArray[swapIndex]; 
      cardDeckArray[swapIndex] = temp; 
     } 
    } 
    cardIndex = 0; //Next card to be pulled off the deck 
} 
+1

我投票重新開放。我不明白爲什麼它「太寬泛」,我理解新手程序員如何容易被重複的掉期困惑。 – amit 2015-03-02 09:34:26

回答

3

這是一個洗牌甲板的,在每次迭代你隨機交換兩個卡,它會導致一些隨機排列的甲板。

然而,這種算法是有缺陷的和有偏見的,也有一些排列更有可能比其他人要生成,使用一個公正的洗牌,你應該使用fisher-yates shuffle(這基本上是相同的想法,但產生i52之間052

的原因及這種偏見的結果的隨機數,而不是之間)在線程深入探討:What distribution do you get from this broken random shuffle?

相關問題