Math.random的范围介于50–5000之间

时间:2019-06-20 19:24:34

标签: java

我想从Math.random获取数组的最小值,最大值和平均值,取值范围为50-5000。这是我的下面代码,但是每次运行它都排除50。我看到最小值显示为51或有时显示为52。我如何将其最小值保持在50或50以下,因为最大值显示正确。唯一的问题是最小部分。

预先感谢

public class Main {

    private double max(double[] array) {
        double max = 0;

        for (int i = 0; i < array.length; i++) {
            if (array[i] > max) {
                max = array[i];
            }
        }
        return max;
    }

    public double min(double[] array) {
        double min = array[0];

        for (int i = 0; i < array.length; i++) {
            if (array[i] < min) {
                min = array[i];
            }
        }
        return min;
    }

    public static void main(String[] args) {
        double array[] = new double[1000];
        for (int i = 0; i < array.length; i++) {

            array[i] =  ((Math.random() * ((5000 - 50) + 1)) + 50);
        }

        Main main = new Main();

        double total = 0;

        for (int i = 0; i < array.length; i++) {
            total = total + array[i];
        }

        double average = total / array.length;


        System.out.println(main.max(array));
        System.out.println(main.min(array));
        System.out.println(average);


    }
}

2 个答案:

答案 0 :(得分:0)

这样做。容易得多。

      Random rand = new Random();
      // generate 1000 elements between 50 inclusive and 5000 exclusive.
      double[] nums = rand.doubles(1000,50,5000).toArray();

或者您更喜欢使用循环


   Random rand = new Random();
   double[] nums = new double[1000]
   for (int i = 0; i < nums.length; i++) {
      nums[i] = rand.nextDouble(4950) + 50; 
    }

答案 1 :(得分:0)

在代码的这一部分中删除加号,java在起始编号中包含但在结尾处包含。尝试摆脱“ +1”,现在使5000增加到5001。

    array[i] =  ((Math.random() * ((5000 - 50) + 1)) + 50);