Java,给数组元素赋不同的随机值

        若要求数组长度为六,给数组元素赋不同的随机值。

//给一个数组元素赋值,要求每的元素的值不相等。

        int[] arr = new int[6];
        arr[0] = (int)(Math.random() * 30) + 1;
        for (int i = 1; i < arr.length; i++)//三层循环,第一层for循环用来给每一个元素赋值随机数
        {
            boolean flag = true;
            while(flag)//若flag是false就赋值完成,是true就重新赋值
            {
                arr[i] = (int)(Math.random() * 30) + 1;//随机数赋值范围1到30
                for (int j = 0; j < i; j++)
                {
                    if(arr[j] == arr[i])//若有相等的值,就重新赋值。
                    {
                        flag = true;//为true时,继续进入while循环重新赋值。
                        break;
                    }
                    flag = false;//如果没有相同的值,就跳出循环,继续下一个元素的赋值。
                }

            }
        }
        for (int i = 0; i < arr.length; i++)
        {
            System.out.print(arr[i] + "\t");
        }

1. 若要用随机数表示[a,b)的范围,公式为(int) (Math.random() * (a - b + 1) ) + a,所以赋值范围为一到三十的表示为(int)(Math.random() * 30) + 1。

2.while循环用来赋随机值,条件为flag的原因是,内层的for循环判断有元素相等时,就给flag赋值为true后马上跳出内层for判断,又进入while重新赋值,只有一直不相等,不被赋值为true,才能跳出while循环,不再继续赋随机值。

第一个for循环里i从一开始,arr[ 0 ] 的赋值要放在循环外面的原因是:如果arr[ 0 ]的赋值跟着while来赋值,内层for循环里的j < i将永远不会进入,会一直while死循环。

你可能感兴趣的:(java)