当前位置: java社区 > 02-初窥门径 > 阅读正文

java从数组循环随机取值不放回

2021.8.17.   441 次   364字

要求:使用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

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群