3

あるデッキからカードをランダムに取り出して別のデッキに入れることで、カードのデッキをシャッフルしようとしています。これは、元のリストから削除された新しいリストに追加されたカードの重複を避けるためです。乱数の範囲をデインクリメントしようと努力したにもかかわらず、引数が範囲外のエラーを引き起こしている可能性があります。提案してください?

List<Card> shuffledDeck = new List<Card> ();

    for (int i = 0; i <= 51; ++i) 
    {
        int c = myDeck.Count + 1;
        int n = rNumber.Next (1, c);
        shuffledDeck.Add(myDeck[n]);
        myDeck.Remove(myDeck[n]);
    }
4

1 に答える 1

2
   List<Card> shuffledDeck = new List<Card> ();

   while (myDeck.Count > 0)
   {
      int c = myDeck.Count;

      int n = rNumber.Next (0, c);
      var value = myDeck[n];
      shuffledDeck.Add(value);
      myDeck.Remove(value);

   }

実際の配列オブジェクトの数を超えるインデックスがないことを確認する必要があります。

于 2013-03-17T17:42:50.153 に答える