C#中怎样将数组的顺序打乱随机排序
生活随笔
收集整理的這篇文章主要介紹了
C#中怎样将数组的顺序打乱随机排序
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
場(chǎng)景
在ZedGraph隨機(jī)生成顏色時(shí)需要從顏色數(shù)組中取顏色對(duì)象。
Color數(shù)組存取的是System.Drawing.Color的顏色。
其順序是相鄰的顏色,顏色差距不大,在取顏色時(shí)按順序取顏色時(shí),如果顏色條數(shù)比較少,差距會(huì)不明顯。
?
需要將此數(shù)組的順序打亂,隨機(jī)進(jìn)行排序。
注:
博客主頁(yè):
https://blog.csdn.net/badao_liumang_qizhi
關(guān)注公眾號(hào)
霸道的程序猿
獲取編程相關(guān)電子書(shū)、教程推送與免費(fèi)下載
實(shí)現(xiàn)
首先附從System.Drawing.Color中獲取所有Color對(duì)象
//用于存取取出的顏色對(duì)象 List<Color> colorList = new List<Color>(); //通過(guò)GetMember獲取所有的公共成員 foreach (var item in typeof(Color).GetMembers()){//只取屬性且為屬性中的已知Color,剔除byte屬性以及一些布爾屬性等(A B G R IsKnownColor Name等)if (item.MemberType == System.Reflection.MemberTypes.Property && System.Drawing.Color.FromName(item.Name).IsKnownColor == true){Color color = System.Drawing.Color.FromName(item.Name);colorList.Add(color);}} //轉(zhuǎn)成數(shù)組 Color[] colors = colorList.ToArray();然后進(jìn)行隨機(jī)打亂順序排序
colors = GetDisruptedItems(colors);調(diào)用亂序方法
private static Color[] GetDisruptedItems(Color[] colors){//生成一個(gè)新數(shù)組:用于在之上計(jì)算和返回Color[] temp;temp = new Color[colors.Length];for (int i = 0; i < temp.Length; i++){temp[i] = colors[i];}//打亂數(shù)組中元素順序Random rand = new Random(DateTime.Now.Millisecond);for (int i = 0; i < temp.Length; i++){int x, y; Color t;x = rand.Next(0, temp.Length);do{y = rand.Next(0, temp.Length);} while (y == x);t = temp[x];temp[x] = temp[y];temp[y] = t;}return temp;}這里根據(jù)需要修改為自己需要的對(duì)象,獲取將其直接改為泛型。
總結(jié)
以上是生活随笔為你收集整理的C#中怎样将数组的顺序打乱随机排序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C#中怎样获取System.Drawin
- 下一篇: C#中删除目录以及目录下文件的方法