C# -ArrayList - Random-打亂陣列/亂數不重複/亂數陣列
C# -ArrayList - Random-打亂陣列/亂數不重複/亂數陣列
此篇不是撲克牌洗牌法,因為使用上覺得效能與結果都不是很好,
撲克牌洗牌一次換兩個,陣列大的時候換了感覺得沒有很乾淨。
所以自己找了另一個方式,打亂陣列的順序。
這個方式是透過 ArrayList 的特性與 Random 。
此範例會令產生一個新的陣列,若要變回原陣列名稱請自行加程式。
邏輯說明
ArrayList 是可動態增減陣列範圍
透過這樣的方式每次隨機Random 一個index
按照這個index在ArrayList取值另存給新的陣列後將該值從ArrayList中刪掉。
則得到的新陣列是原來陣列的打亂。
程式碼
static ArrayList list = new ArrayList();
static String[] Test = new String[10000];
static String[] NewTest = new String[10000];
for (int i = 1; i < 10001; i++)
{
Test[i]=i.ToString();//先創造原始字串陣列1~10000
}
for (int i = 0; i < 10000; i++)
{
list.Add(i);
}//這邊先創造一個ArrayList list 把原始陣列Test的內容都加進去
//即你原始陣列長度有多少,這個list就要有多少
for (int i = 0; i < 10000; i++)
{
Random Rnd = new Random(); //必須先new Random
int r = Rnd.Next(0, list.Count);
NewTest[i] = Test[(int)list[r]];//list 是一個物件型別需轉成int,並將list隨機index的值存給NewTest
list.RemoveAt(r);//將list這個index的值刪除
}
for (int i = 0; i < 10000; i++)
{
Console.Write(NewTest[i]); //Test是原始陣列,NewTest則是亂數後的陣列結果
}
留言
張貼留言