using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { List<int> arrbase=new List<int>(54); List<int> arrresult = new List<int>(54); //1初始化牌 for (int i = 0; i < 54; i++) { arrbase.Add(i + 1); arrresult.Add(0); Console.WriteLine("將"+(i+1)+"放在"+i+"位置"); } Console.WriteLine("初始化完畢"); //2.隨機抽一張牌,放入B數據 Random r=new Random(); var count = arrbase.Count; for (int i = 0; i < 54; i++) { var index = r.Next(0, count);//隨機肯定想要抽牌的位置 var tem = arrbase[index];//取出該位置上面的牌 arrresult[i] = tem;//將該牌放置在牌堆B中.從前向後依次放置 Console.WriteLine("將{0}放在了牌組B的{1}位置", tem, i); if (index != count-1) //從牌堆A隨機取的不是牌堆A的最後一張 { //將最後一個牌給 index位置 arrbase[index] = arrbase[count - 1]; } //移除牌堆A的最後一個元素 由於這裏還要用 因此直接就用count-1代替了 count = count - 1; } if (arrresult.Distinct().Count()==54)//數據去重以後仍是和之前大小同樣,說明全部牌都移過來了 { Console.WriteLine("清洗以後的牌局:"); foreach (var i in arrresult) { Console.WriteLine(i); } } else { Console.WriteLine("出錯了!"); } Console.ReadKey(); } } }