public class a2 { public static void main(String[] args) { int n; n=2000; int[] j=new int[50]; int[] a = new int[n]; for (int i =0;i<200;i++)a[i]=i+1; for(int i=0;i<50;i++) { j[i]=a[(int)(Math.random()*n)]; a[(int)(Math.random()*n)]=a[n-1]; n--; } } }
做法有不少, 这个是其中一种做法可以用数组调乱顺序int N = 2000; int X = 10; int[] data = new int[N]; Random rand = new Random(); for(int i = 0; i < data.length; i++) data[i] = i + 1;////////////////////////////////// for(int i = 0; i < X; i++) { int index = rand.nextInt(N); int tmp = data[index]; data[index] = data[i]; data[i] = tmp; } //////////////////////////////////这样data前X过数字就可以了,而且后面的取数只需要再运行最后一个循环,效率相对比较高。
public static void main(String[] args) { int[] n = new int[2000]; for (int i=0;i<2000;i++) n[i]=i;
for (int i=0;i<2000;i++){ int r = (int)(Math.random()*(2000-i))+i; int t = n[i]; n[i]=n[r]; n[r]=t; } for (int i=0;i<2000;i++)System.out.println(n[i]); }
然后从0到ArrayList.size()-1之间取一个随机数,然后从ArrayList中删除,重复这行循环
{
public static void main(String[] args)
{
int n;
n=2000;
int[] j=new int[50];
int[] a = new int[n];
for (int i =0;i<200;i++)a[i]=i+1;
for(int i=0;i<50;i++)
{ j[i]=a[(int)(Math.random()*n)];
a[(int)(Math.random()*n)]=a[n-1];
n--;
}
}
}
这个是其中一种做法可以用数组调乱顺序int N = 2000;
int X = 10;
int[] data = new int[N];
Random rand = new Random();
for(int i = 0; i < data.length; i++)
data[i] = i + 1;//////////////////////////////////
for(int i = 0; i < X; i++) {
int index = rand.nextInt(N);
int tmp = data[index];
data[index] = data[i];
data[i] = tmp;
}
//////////////////////////////////这样data前X过数字就可以了,而且后面的取数只需要再运行最后一个循环,效率相对比较高。
然后从0到ArrayList.size()-1之间取一个随机数,然后从ArrayList中删除,重复这行循环
这个方法好
int targetValue = Math.round((float)randomValue);targetValue 就是你要的拉
int[] n = new int[2000];
for (int i=0;i<2000;i++) n[i]=i;
for (int i=0;i<2000;i++){
int r = (int)(Math.random()*(2000-i))+i;
int t = n[i];
n[i]=n[r];
n[r]=t;
}
for (int i=0;i<2000;i++)System.out.println(n[i]);
}