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 回答