请编程实现:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复(百度了一下,get一种高性能算法,非递归)
来源:互联网 发布:网络买卖纠纷 编辑:程序博客网 时间:2024/04/28 04:34
网上找到一种更好的实现方式:
(1)把N个数放到容器A(int数组)中.
(2)从N个数中随机取出1个数放入容器B(int数组)中.
(3)把容器A中最后一个数与随机抽取的数对调 或者 把容器A中最后一个数覆盖随机抽取出来的数.
(4)这时从容器A(假设N个数,索引0 到 索引N-2)之间随机取一个数.再放入容器B中,重复此步骤.
说明:也就是第二次是从容器A中 第一个元素到倒数第二个元素 中随机取一个数.
这种好处是,随机数所取范围逐步缩小,而且杜绝了大数据时集合执行删除操作时产生的瓶颈.
1 namespace Wolfy.RandomDemo 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 int[] result = GetRandom(100); 8 for (int i = 0; i < result.Length; i++) 9 {10 Console.WriteLine(result[i]);11 }12 Console.WriteLine("over:" + result.Length);13 Console.Read();14 }15 /// <summary>16 /// 获得无重复随机数组17 /// </summary>18 /// <param name="n">上限n</param>19 /// <returns>返回随机数组</returns>20 static int[] GetRandom(int n)21 {22 //容器A和B23 int[] arryA = new int[n];24 int[] arryB = new int[n];25 //填充容器a26 for (int i = 0; i < arryA.Length; i++)27 {28 arryA[i] = i + 1;29 }30 //随机对象31 Random r = new Random();32 //最后一个元素的索引 如n=100,end=9933 int end = n - 1;34 for (int i = 0; i < n; i++)35 {36 //生成随机数 因为随机的是索引 所以从0到100取,end=10037 //一个大于等于 minValue 且小于 maxValue 的 32 位带符号整数,即: 返回的值范围包括 minValue 但不包括 maxValue。 38 //如果 minValue 等于 maxValue,则返回 minValue39 //40 int minValue = 0;41 int maxValue = end + 1;42 int ranIndex = r.Next(minValue, maxValue);43 //把随机数放在容器B中44 arryB[i] = arryA[ranIndex];45 //用最后一个元素覆盖取出的元素46 arryA[ranIndex] = arryA[end];47 //缩减随机数生成的范围48 end--;49 }50 //返回生成的随机数组51 return arryB;52 }53 }54 }
0 0
- 请编程实现:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复(百度了一下,get一种高性能算法,非递归)
- 温故知新--数组(产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。)
- 数组问题:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 用c# 产生一个 int 数组 长度为100,并向其中随机插入 1-100 ,并且不能重复
- a 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
- 产生一个int 数组,长度为100,并向其中随时插入1-100,并且不能重复
- java笔试题---程序产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
- 编程产生一个int数组,长度为30,并向其中随机插入1-30,并且不能重复输出数组。实现一个冒泡排序算法对其进行排序,输出排序结果
- 实现求出若干整数之和为500的连续整数(如98,99,100,101,102)的所有组合&&产生一个int数组,长度为100,并向其中随机插入1~100,要求不能重复
- 产生一个int数组,随机向数组中插入1-100的随机数且不能重复
- C# 向长度为100数组内随机插入1-100,不能重复。
- centos常用命令
- ie上不了网
- C# 事件的理解
- 抽取WebRTC的音频编解码库iLBC在iOS平台编译成静态库
- 函数PostEvent详解
- 请编程实现:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复(百度了一下,get一种高性能算法,非递归)
- Unity Text 插入超链接
- 网络编辑器插件ckeditor+ckfinder配置
- python中staticmethod classmethod及普通函数的区别
- JQuery AJAX请求aspx后台方法
- 台中佶豐床墊運費 (含台中外縣市運送收費標準)
- SQL Server Date 函数
- 栈的C语言实现及相关知识点总结
- C#后台验证身份证号码的一个方法