要求:使用java程序,从已知数组中{ 30,22,11,99,55}中循环随机取值,取出后不放回,下一次从剩下的继续随机抽取,直到全部抽取完毕。
public static void main(String[] args) {
Random rd = new Random(); // 随机数对象
int[] a = {30, 20, 11, 99, 55}; // 待取值数组
int t; // 临时交换变量
for(int i=0;i<a.length;i++) { // 循环n次
int r = rd.nextInt(a.length-i); // 随机获得一个下标
System.out.println(a[r]);
// 不能重复抽取,取出的和最后一个做交换
t = a[r];
a[r] = a[a.length-i-1];
a[a.length-i-1] = t;
}
}
程序试执行,结果如下:
- 30
- 99
- 11
- 20
- 55