首页 > 编程知识 正文

java生成指定范围的随机数,java指定范围随机整数

时间:2023-05-03 10:01:29 阅读:31106 作者:3795

1 importjava.util.HashSet; 2 importjava.util.Random; 3

publicclassgeneraterandomnumber {5}

6 publicstaticvoidmain (string [ ] args )7//一、用JAVA生成随机数的方式8///9///intrandomnumber=(int ) math.round ) math

11//12//long random num=system.current time millis (; 13//intrandomnumber=(int ) randomnum% ) max-min ) min; 14

15//16//random random=new random (; 17//intrandomnumber=random.nextint (max ) % ) %(max-min 1) min; 18

19 //方法1 :最简单易懂的双重循环重量为20//int [ ] reul t1=random common (20,50,10 ); 21//for(intI:reulT1) 22//system.out.println ) I; 23 //}24

25 //方法利用HashSet的特点,确定不同的值26 //HashSet set=new HashSet (; 27//random set (20、50、10、set ); 28//for(intj:set ) 29//system.out.println ) j; 30 //}31

32 //方法3 :排除随机到达的数量

33 int [ ] reul T2=random array (0,20,18 ); 34//for(intI:reulT2) 35//system.out.println ) I; 36 //}

638 ) 38

39 //二、随机给定范围内的n个不重复数

40 /**

41 *方法1 :去除最简单最容易理解的双环重42 *随机指定范围内n个不重复数43 *最简单最基本的方法44 *@parammin指定范围最小值45 *@parammax指定范围最大值46 *@paramn

48公共静态int [ ]随机公共(intn,int max,intn ) 49if(n ) max-min1)|| max

71 /**

72 *方法2 :利用2:HashSet的特点,只能存储不同值73 *随机指定范围内的n个不重叠数74 *。 利用Hashset的特征,只能存储不同的值75 *@parammin指定范围最小值76 *@parammax指定范围最大值77 *@paramn随机数个数78*@

80 publicstaticvoidrandomset (intmin,int max,int n,HashSetset ) 81if(n(max-min1)|| max

86intnum=(int ) ) Math.random ) max-min ) ) min; 87set.add(num; //将不同的数量放入HashSet

88 ) 89intsetsize=set.size (; 如果90 //置数小于指定的生成个数,则调用递归生成剩馀个数的随机数,循环到指定的大小

91if(setsize

93(94 ) 95

96 /**

97 *方法3 :在初始化的非重叠储备库中随机产生一个随机数并产生结果,排除随机到达的随机数98 *随机指定范围内的n个非重叠随机数99 *,其中100 *表示储备库随机到达的数量(len-1 ) 这样,102 *@parammax指定范围最大值103 *@parammin指定范围最小值104 *@paramn随机数个数105 *@returnint[]随机数结果集106 */

107公共静态int [ ] random array (intmin,int max,intn ) {108 //min=20 max=40 n=10

109 int len=max-min 1; 110

11if (最大||nlen ) { 112返回空值; 113 ) 114

115 //初始化指定范围的候选数组

116 int[] source=new int[len]; 17for(intI=min; i min len; I ) {118 source[i-min]=i; 19 )初始化120//source时,它是min到max (包括首尾)之间的所有数字数组。 [ 20,21 .10]

121

122 int[] result=new int[n]; 123随机随机=新随机(; 124个索引=0; 125for(intI=0; i result.length; I ) 126system.out.println('I '次循环); 127

128 int randomInt=random.nextInt (; 129 intmaxeffectivearraysubscript=len----; //最大有效数组下标,数组中未使用超过此下标的值. 130 //候选数组0到(len-2 )随机一个下标除数) maxEffectiveArraySubScript的可取范围为(0~ )

132 index=math.ABS (random int % maxeffectivearraysubscript; 133

134 system.out.println (randomint : ) random int )、原始阵列最大有效角坐标: (maxeffectivearraysubscript )、index 3360 (index 13360 ) 136printarray(source,maxEffectiveArraySubScript; 137 System.out.println (' ); 138

139 //将随机到达的数量放入结果集中

140 result[i]=source[index]; 141 System.out.println ('找到的数量为:' result[i] ); 用与候选数组(len-1 )中的下标相对应的数字替换142 //候选数组中随机计数的数字,以使未在“有效搜索子数组”之后搜索的数据向前,然后可能随机找到。 因为143 //每个循环的原始序列的有效长度是-1 .

144 source[index]=source[len]; 145

146 System.out.println (原始序列为: ); 147打印机(source; 148 System.out.println (' ); 149 System.out.println (目标序列为: ); 150打印机(result ); 151 System.out.println (' ); 152 ) 153返回结果; 154 ) 155

156 publicstaticvoidprintarray (int [ ] intarray ) 157for ) intI=0; i intArray.length; I ) 158 system.out.print (intarray [ I ],'; 159(160 ) 161

162 publicstaticvoidprintarray (int [ ] intarray,intmaxArrayNum ) 163for(intI=0; i maxArrayNum; I ) 164 system.out.print (intarray [ I ],'; 165 }166 }167 }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。