java random生成不重复的随机数,java生成不重复的随机整数

  java random生成不重复的随机数,java生成不重复的随机整数

  在需求:,得到10个1-20的随机数并要求随机数不能重复,存储在集合中并遍历。

  分析:

  1.要创建Set对象,可以使用HashSet或TreeSet。不同的是TreeSet是排序的。2.创建一个随机数对象,得到一个随机数。3.判断集合的长度是否大于10,是,停止生成、存储和遍历。否:继续生成,直到长度大于10,停止生成、存储和遍历。4.输出代码:.

  class Set demo { public static void main(string[]args){//Create Set Set object Set integer s=new treeset integer();//创建一个随机数对象Random r=new Random();while(s . size()10){ int num=r . nextint(20)1;s.add(数字);} for(整数I :s){ system . out . println(I);} } }补充:

  通过单个数组简易实现不重复随机数生成,先上源码。

  /* * * Get random array * @ param source array * @ param size target array size * @ return random array */public static int[]Get random RES(int[]source,int size){ if(source==nullsize source . length){ return;} int[]result=new int[size];Random Random=new Random();for(int I=0;I尺寸;I){ int random index=random . nextint(source . length-1-I);int random RES=source[random index];结果[I]=random RES;int temp=source[random index];source[random index]=source[source . length-1-I];source[source.length - 1 - i]=temp}返回结果;}下面看图解,数字为数组的index。

  黑色表示随机数,红色表示随机数。所以只能随机得到index的个数:0 ~ 4,假设是2,然后把2的位置和index5互换。

  结果[]={2}

  继续循环

  从index: 0到3循环,假设index:0~3取出,与index4互换,结果为result={2,0},以此类推。

  优点:简单快捷。缺点:不可能每次都得到最后一个数字。

  不断随机,使用Set去重

  /* * *生成随机数组*@param size目标数组大小*@param max最大目标数*/public set integer get Random set(int size,int max){ Random Random=new Random();set integer result=new LinkedHashSetInteger();while(generated . size()size){ Integer next=RNG . nextint(max)1;generated.add(下一个);}}此处使用LinkedHashSet是为了确保插入顺序与结果相同。

  关于非重复随机数的Java case实现的这篇文章到此为止。关于Java非重复随机数的更多信息,请搜索热门IT之前的文章或者继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: