我想从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);
}
}
答案 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);