场景

在ZedGraph随机生成颜色时需要从颜色数组中取颜色对象。

Color数组存取的是System.Drawing.Color的颜色。

其顺序是相邻的颜色,颜色差距不大,在取颜色时按顺序取颜色时,如果颜色条数比较少,差距会不明显。

需要将此数组的顺序打乱,随机进行排序。

注:

博客主页:
https://blog.csdn.net/badao_liumang_qizhi

关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载

实现

首先附从System.Drawing.Color中获取所有Color对象

  1. //用于存取取出的颜色对象
  2. List<Color> colorList = new List<Color>();
  3. //通过GetMember获取所有的公共成员
  4. foreach (var item in typeof(Color).GetMembers())
  5. {
  6. //只取属性且为属性中的已知Color,剔除byte属性以及一些布尔属性等(A B G R IsKnownColor Name等)
  7. if (item.MemberType == System.Reflection.MemberTypes.Property && System.Drawing.Color.FromName
  8.  
  9. (item.Name).IsKnownColor == true)
  10. {
  11. Color color = System.Drawing.Color.FromName(item.Name);
  12. colorList.Add(color);
  13. }
  14. }
  15. //转成数组
  16. Color[] colors = colorList.ToArray();

然后进行随机打乱顺序排序

  1. colors = GetDisruptedItems(colors);

调用乱序方法

  1. private static Color[] GetDisruptedItems(Color[] colors)
  2. {
  3. //生成一个新数组:用于在之上计算和返回
  4. Color[] temp;
  5. temp = new Color[colors.Length];
  6. for (int i = ; i < temp.Length; i++)
  7. {
  8. temp[i] = colors[i];
  9. }
  10.  
  11. //打乱数组中元素顺序
  12. Random rand = new Random(DateTime.Now.Millisecond);
  13. for (int i = ; i < temp.Length; i++)
  14. {
  15. int x, y; Color t;
  16. x = rand.Next(, temp.Length);
  17. do
  18. {
  19. y = rand.Next(, temp.Length);
  20. } while (y == x);
  21.  
  22. t = temp[x];
  23. temp[x] = temp[y];
  24. temp[y] = t;
  25. }
  26.  
  27. return temp;
  28.  
  29. }

这里根据需要修改为自己需要的对象,获取将其直接改为泛型。

C#中怎样将数组的顺序打乱随机排序的更多相关文章

  1. Javarscipt中数组或者字符串的随机排序方法

    在日常开发中,经常会遇到随机排序的需求,思路就是利用Math.random()方法,抽取随机数,让数组中的元素进行对调: 话不多说直接上代码,方法一:基本思路就是将a中随机抽取一个元素,放入b中,再从 ...

  2. php中的常用数组函数(八) 排序函数汇总(sort、rsort、usort、asort、uasort、arsort、ksort、uksort、krsort、natsort、natcasesort、array_multisort)

    测试环境:php5.3.29 sort_flags 可以用以下值改变排序的行为: 排序类型标记: SORT_REGULAR - 正常比较单元(不改变类型) SORT_NUMERIC - 单元被作为数字 ...

  3. PHP中的常用数组操作方法

    一.数组操作的基本函数 数组的键名和值array_values($arr);  获得数组的值array_keys($arr);  获得数组的键名array_flip($arr);  数组中的值与键名互 ...

  4. PHP中常用的数组函数总结

    整理了一份PHP开发中数组操作大全,包含有数组操作的基本函数,数组的分段和填充,数组与栈,数组与列队,回调函数,排序,计算,其他的数组函数等. 一,数组操作的基本函数 数组的键名和值 array_va ...

  5. c++随机排序容器中的元素

    在各种程序语言中都提供了将容器元素随机排序的shuffle方法,c++也不例外. 不过c++将shuffle放在了<algorithm>中而不是像其他语言一样在random里,同时c++1 ...

  6. 一组数字,从1到n,从中减少了3个数,顺序打乱,放在n-3的数组里,找出丢失数字

    曾经看到有这样一个JS题:有一组数字,从1到n,从中减少了3个数,顺序也被打乱,放在一个n-3的数组里请找出丢失的数字,最好能有程序,最好算法比较快假设n=10000 下面我也来贴一个算法. func ...

  7. JS对象 颠倒数组元素顺序reverse() reverse() 方法用于颠倒数组中元素的顺序。

    颠倒数组元素顺序reverse() reverse() 方法用于颠倒数组中元素的顺序. 语法: arrayObject.reverse() 注意:该方法会改变原来的数组,而不会创建新的数组. 定义数组 ...

  8. Day_12【集合】扩展案例1_利用集合的知识对长度为10的int数组进行去重,产生新数组,不能改变数组中原来数字的大小顺序

    分析以下需求,并用代码实现 1.定义一个长度为10的int数组,并存入10个int类型的数据,其中有一些数据是重复的 2.利用集合的知识对数组进行去重,产生新数组,不能改变数组中原来数字的大小顺序 3 ...

  9. js颠倒数组元素顺序reverse()

    颠倒数组元素顺序reverse() reverse() 方法用于颠倒数组中元素的顺序. 语法: arrayObject.reverse() 注意:该方法会改变原来的数组,而不会创建新的数组. 定义数组 ...

随机推荐

  1. mac chrome

    command + < 可以直接跳转到谷歌设置的页面去.

  2. .net代码实现上千次ping的实现

    先上代码: 多线程实现ping校验: public void PingCameraNew(List<CameraMongoDto> assetlist) { ThreadPool.SetM ...

  3. python学习------文件的读与写

    f=open("yesterday","r",encoding="utf-8") #文件句柄 data=f.read() data2=f.r ...

  4. DK1.5-JDK11各个新特性

    摘要: 参考文献: https://blog.csdn.net/lsxf_xin/article/details/79712537 JDK各个版本的新特性 要了解一门语言,最好的方式就是要能从基础的版 ...

  5. Python 中使用 Pillow 处理图片增加水印

    这个是个比较常见的需求,比如你在某个网站上发布了图片,在图片上就会出现带你昵称的水印.那么在Python中应该如何处理这一类需求呢? 其实在我的<Django实战开发>视频教程中有讲到这一 ...

  6. Linux服务器配置GPU版本的pytorch Torchvision TensorFlow

    最近在Linux服务器上配置项目,项目需要使用GPU版本的pytorch和TensorFlow,而且该项目内会同时使用TensorFlow的GPU和CPU. 在服务器上装环境,如果重新开始,就需要下载 ...

  7. 5.Python安装依赖(包)模块方法介绍

    1.前提条件 1). 确保已经安装需要的Python版本 2). 确保已经将Python的目录加入到环境变量中 2. Python安装包的几种常用方式 1). pip安装方式(正常在线安装) 2). ...

  8. 简单的说说tippyjs的使用

    我们会接触到很多插件的使用,但是我们该如何的去使用呢,本人建议多学习英语,会对开发很有帮助的 为什么说是多去学习它,接下来我们就来说说: 当你没学习英语看到下面的官网是这样子的 当你会英语了,你就会觉 ...

  9. AD常用命令以及概念

    活动目录服务器常用命令合集如下: net accounts  查看第一台域控的计算机角色net accounts   查看计算机角色net share      查看共享netdom query fs ...

  10. Pycharm每次新建工程都要重新安装相关库的解决办法

    之前自己每次重建工程时,都不厌其烦的重新安装了第三方的库,直接在pycharm的terminal中利用pip安装,或者鼠标放在所需库的红色波浪线上 直接点击Install Package XXX 后面 ...