取不重复随机数是要常遇到的一个问题,比如取10个1到10的随机数并不重复,一般可以用一个数组放入几个随机数,然后判断是否重复;但如果数较多,效率就会很低,这时就可以考虑用取固定数组,然后随机排序的方式.
一.取随机数判断重复算法:
import java.util.*; public class 不重复随机数 { public static void main(String[] args){ Random shu=new Random(); int rdget; int[] t = new int[8]; for(int i=0;i<8;i++) { rdget = shu.nextInt(36); for(int j = 0 ; j < i ; j++){ if(rdget == t[j]){ rdget = shu.nextInt(36); j = 0; } } t[i] = rdget; System.out.print(t[i]+" "); }
}
} 二.到固定数组再随机排序:
import java.lang.Math; import java.util.Scanner; public class 数组排序 { public static void main(String args[]) { int a[]=new int[6]; for(int i=0;i<=5;i++) { Scanner sca=new Scanner(System.in); System.out.println("请输数组元素a["+i+"]"); a[i]=sca.nextInt(); } for(int i=0;i<=100;i++) { int middle=(int)(a.length/2*Math.random()); int radius=(int)(middle+1); int t; t=a[radius-middle]; a[radius-middle]=a[middle+radius-1]; a[middle+radius-1]=t; } for(int i=0;i<a.length;i++) System.out.print(a[i]+" "); System.out.println(); } }