我试图通过随机抽取一张纸牌并将其放到另一张纸牌中来洗牌,以避免将纸牌重复添加到新列表中后将它们从原始列表中删除的情况,尽管我努力减小随机数的范围,但仍导致参数超出范围错误。有什么建议吗?

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]);
    }

最佳答案

   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);

   }


您需要确保索引没有超过实际数组对象数。

10-05 22:12