[C#] 如何洗亂 List
2012-11-14
這問題很好玩,之前跟 The God of Excel -智揚學長 在旅行途中一直在想這問題..Orz..
剛好這幾天有遇到這樣的需求,因為老闆希望撈出來的商品,不要順序都一樣,是否可以增加變化感..
又再度引發公司熱烈討論,這問題真是令人著迷?!
無論是效率,或是方法真的都很好玩..
下面是我提供的方法..我在List 中先依序放入 1~50
之後再丟入ShuffleList中將它洗亂…
依序放入 1~ 50 :
List<string> pool=new List<string>();
for (int i = 1; i <= 50; i++)
{
pool.Add(i.ToString());
}
洗亂的 Method:
public void ShuffleList<T>(ref List<T> list)
{
Random rnd = new Random(DateTime.Now.Millisecond);
for (int i = list.Count-1; i > 0;i-- )
{
int p = rnd.Next(i);
T swap = list[p];
list[p] = list[i];
list[i] = swap;
}
}
呼叫 :
ShuffleList(ref pool);
foreach(var res in pool)
{
Response.Write(res+",");
}
結果:
當然有其他更有效率的方法,也歡迎提供…
91 哥 提供 :
Random rnd = new Random();
list.OrderBy(o => rnd.Next());
補充一個網站 :http://www.dotblogs.com.tw/shadow/archive/2011/12/30/63779.aspx
超級詳細…
標籤:
C#
-- Yesterday I wrote down the code. I bet I could be your hero. I am a mighty little programmer. 如果這篇文章有幫助到您,簡單留個言,或是幫我按個讚,讓我有寫下去的動力...