日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复

發布時間:2024/4/14 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫在前面

前天去面試了,給出的筆試中有這樣的一道算法題,產生一個int數組,長度為100,并向其中隨機插入1-100,并且不能重復

當時,腦子一熱,也沒想那么多,就用集合實現了一下,經面試官提醒,發現還有更好的方式來實現。

代碼

首先看一下這樣一段代碼

1 namespace Wolfy.RandomDemo 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 List<int> lst = new List<int>(); 8 Random r = new Random(); 9 while (true) 10 { 11 int temp = r.Next(1, 101); 12 if (lst.Count == 100) 13 { 14 break; 15 } 16 if (!lst.Contains(temp)) 17 { 18 lst.Add(temp); 19 } 20 } 21 for (int i = 0; i < lst.Count; i++) 22 { 23 Console.WriteLine(lst[i]); 24 } 25 Console.Read(); 26 } 27 } 28 }

?雖然上面的代碼,實現題目的要求,但是如果是1到100萬或者更大,這樣的每次判斷是否包含這樣的一個數,勢必會影響到性能。

網上找到一種更好的實現方式:

(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和B 23 int[] arryA = new int[n]; 24 int[] arryB = new int[n]; 25 //填充容器a 26 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=99 33 int end = n - 1; 34 for (int i = 0; i < n; i++) 35 { 36 //生成隨機數 因為隨機的是索引 所以從0到100取,end=100 37 //一個大于等于 minValue 且小于 maxValue 的 32 位帶符號整數,即:返回的值范圍包括 minValue 但不包括 maxValue。 38 //如果 minValue 等于 maxValue,則返回 minValue 39 // 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 }

總結

實現方式有很多種,但是如果能用高效的方式就用高效的方式實現。這種生成無重復的隨機數,可以在運用在抽獎系統中。

轉載于:https://www.cnblogs.com/wolf-sun/p/4321609.html

總結

以上是生活随笔為你收集整理的产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美大浪妇猛交饥渴大叫 | 欧美成人国产 | 95国产精品 | 色先锋影院 | 999精品国产 | 你懂的亚洲 | 国产麻豆91视频 | 亚洲国产剧情在线观看 | 色婷久久| 青青草av | 亚洲精品乱码久久久久久黑人 | 亚洲国产视频一区 | 日韩在线免费av | 椎名由奈av一区二区三区 | 青草视频在线观看免费 | 久久久ww| 99免费在线观看 | 亚洲免费婷婷 | 精品国产丝袜一区二区三区乱码 | 国产一二三在线 | 亚洲AV成人无码久久精品巨臀 | 国产精品一区电影 | 麻豆出品 | 二区视频在线观看 | 亚洲热影院 | 伊人激情 | 日韩视频一区在线观看 | 欧美乱做爰xxxⅹ久久久 | 草莓视频一区二区三区 | 在线观看日本中文字幕 | 一区二区三区四区五区六区 | 中国在线观看免费高清视频播放 | 亚洲热在线观看 | 欧洲精品在线播放 | 国产91欧美 | 97干干 | ass日本寡妇pics | 少妇被按摩师摸高潮了 | hd丰满圆润的女人hd | 色婷婷色婷婷 | 中文字幕手机在线视频 | 91日韩| 欧美日韩色图片 | 韩国电影大尺度在线观看 | 国产一级影院 | 久久黄色网址 | 久久久亚洲国产 | 久久av一区二区三区漫画 | 天天干天天舔天天射 | 欧美黑人多人双交 | 老司机一区二区三区 | 无码少妇一区二区三区芒果 | 精品一区二区国产 | www.av天天| 国产精品久久久久久一区二区 | 极品尤物一区二区 | 国产美女在线精品 | 夜夜躁狠狠躁 | 又爽又黄视频 | av福利社| 韩产日产国产欧产 | 97在线视频免费观看 | 女av在线 | 天堂网在线观看视频 | 777米奇影视第四色 五月丁香久久婷婷 | 在线欧美日韩 | 少妇特殊按摩高潮惨叫无码 | 亚洲成人播放 | 香蕉视频免费在线观看 | 日韩精品视频一区二区在线观看 | 欧美黑人一区二区三区 | 国产影视一区二区 | 国产高清在线免费 | av色哟哟| 欧美日韩精品中文字幕 | 韩国av一区二区 | 日韩高清免费观看 | 久久精视频 | 99热网址| av片免费看 | 久久精品成人 | 男人天堂综合网 | 又污又黄又爽的网站 | 亚洲国产欧美在线观看 | 欧美一本 | 久久亚洲网| 午夜精品久久久久久久99热浪潮 | 一区亚洲 | 亚洲综合免费观看高清完整版在线 | 精品国产aⅴ一区二区三区四川人 | 亚洲精品热 | 国产成人综合网 | 中文字幕精品久久 | 96av在线视频| 成人黄色在线播放 | 国模大胆一区二区三区 | 美女mm131爽爽爽免费动视频 | 97色在线| 精品久久久中文字幕 |