C# 生成随机索引列表
2016-06-16 18:07
393 查看
/// <summary> /// 生成随机索引列表 /// </summary> /// <param name="maxNumber"></param> /// <returns></returns> private static List<int> CreateRandomNumbers(int maxNumber) { var array = new int[maxNumber]; for (var i = 0; i < maxNumber; i++) { array[i] = i; } var rnd = new Random(); for (var i = 0; i < maxNumber; i++) { var index = rnd.Next(0, maxNumber); if (i != index) { var tmpval = array[i]; array[i] = array[index]; array[index] = tmpval; } } var list = new List<int>(); for (var i = 0; i < maxNumber; i++) { list.Add(array[i]); } return list; } /// <summary> /// 生成随机索引列表 /// </summary> /// <param name="maxNumber"></param> /// <returns></returns> private static List<int> CreateRandomNumbers2(int maxNumber) { List<int> list = new List<int>(); Random rd = new Random(); while (list.Count() < maxNumber) { int i = rd.Next(0, maxNumber); if (!list.Contains(i)) { list.Add(i); } } return list; } /// <summary> /// 生成随机索引列表 /// </summary> /// <param name="maxNumber"></param> /// <returns></returns> private static List<int> CreateRandomNumbers2(int maxNumber) { var array = new int[maxNumber, 2]; var index = maxNumber - 1; var rnd = new Random(); while (index > 0) { array[index, 0] = index; array[index, 1] = rnd.Next(0, maxNumber); index--; } var list = new List<int>(); for (var i = 0; i < maxNumber; i++) { for (var j = i + 1; j < maxNumber; j++) { if (array[i, 1] > array[j, 1]) { var tIndex = array[i, 0]; var tValue = array[i, 1]; array[i, 0] = array[j, 0]; array[i, 1] = array[j, 1]; array[j, 0] = tIndex; array[j, 1] = tValue; } } } for (var i = 0; i < maxNumber; i++) { list.Add(array[i, 0]); } return list; }
第一种速度最快,第二种次之,第三种最慢
相关文章推荐
- 关于C#对图片部分操作(水印、透明度)
- U3D结合第三方库ICSharpCode.SharpZipLib 实现文件夹打包解包
- C# UDP收发请求工具类
- C# 多线程是否结束可通过线程池可以判断
- VS2015中C#版本6.0的新特性 你需要知道
- C#中lambda表达式浅析
- C#中数组、ArrayList和List三者的区别
- [置顶] C# 如何利用反射,将字符串转化为类名并调用类中方法
- 自定义热键的代码(C#)
- C#套接字Socket编程之最简单通信
- C# DateTime 格式化 奇怪问题!
- C# TransactionScope 使用
- C#导出Excel
- C#复习④
- C# 设置鼠标指针
- C#虚基类继承与接口的区别
- C#中实体集合和实体转换成相应的string、XDocument、XElement
- C#复习③
- c# 多态的美丽(虚方法、抽象、接口实现)
- C# 多线程的自动管理(线程池) 基于Task的方式