生成无重复随机数的2种方法
2007-01-17 00:56
681 查看
第一种方法,在一个待选数组中随机产生一个数,然后把他放到待选数组的最后,然后从length-1里随机产生下一个随机数,如此类推
方法二:还是一个固定的无重复的数组,然后把这个数组随机调换位置,多次之后这个数组就是一个无重复的随机数组了。
public static int[] randoms() { Random r = new Random(); int temp1,temp2; int send[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21}; int len = send.length; int returnValue[] = new int[22]; for(int i=0;i<22;i++) { temp1 = Math.abs(r.nextInt())% len; returnValue[i] = send[temp1]; temp2 = send[temp1]; send[temp1] = send[len-1]; send[len-1] = temp2; len--; } return returnValue; } } |
public static int[] random2() { int send[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21}; int temp1,temp2,temp3; Random r = new Random(); for(int i=0;i<send.length;i++) //随机交换send.length次 { temp1 = Math.abs(r.nextInt())%(send.length-1); //随机产生一个位置 temp2 = Math.abs(r.nextInt())%(send.length-1); //随机产生另一个位置 if(temp1 != temp2) { temp3 = send[temp1]; send[temp1] = send[temp2]; send[temp2] = temp3; } } return send; } 一次测试: C:/java>java Test 5 7 11 3 6 14 20 21 17 1 10 0 2 4 16 8 12 15 18 9 19 13 18 10 9 13 3 16 14 5 15 12 8 11 4 7 17 0 2 20 1 19 6 21 |
相关文章推荐
- java生成无重复随机数的2种方法
- 生成无重复随机数的2种方法
- java生成无重复随机数的2种方法
- java生成无重复随机数的2种方法
- Python编程实现生成特定范围内不重复多个随机数的2种方法
- java中生成无重复随机数的2种方法
- Java生成随机数的2种示例方法代码
- PHP生成不重复随机数的方法汇总
- 转载:JAVA生成给定范围内的不重复的随机数的几种方法
- JAVA生成给定范围内的不重复的随机数的几种方法
- C#生成不重复随机数的方法
- 多线程中生成随机数序列重复问题的解决方法
- PHP不重复随机数的生成方法
- 随机生成13位绝对无重复随机数的高效方法
- 多线程中生成随机数序列重复问题的解决方法
- php生成不重复随机数、数组的4种方法分享
- 算法--生成m个指定范围的不重复随机数的三种方法分析(Java实现)
- Java编程实现从给定范围内随机N个不重复数生成随机数的方法小结
- c#生成不重复随机数的方法
- Golang编程实现生成n个从a到b不重复随机数的方法