Я хочу получить минимальное, максимальное и среднее значение массива из 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);
}
}
Вам нужно случайное число или 50?
Я также хочу включить 50 как минимум, но минимум показывает даже больше, чем 50, поэтому иногда 51 или 52
Удалите этот `+ 1`.
выпуск 4999 52 2554,605
@forpas i сделал min даже больше: array[i] = (int) ((Math.random() * ((5000 - 50)) + 50));
Вы получаете случайные числа, поэтому минимальное из них, скорее всего, будет больше 50.
да, я знаю, но я подумал, что, предоставив этот диапазон Math.random, вы избежите этого, поэтому что я могу сделать с Math.ranom, чтобы быть ограниченным этим диапазоном




Сделай это так. Это намного проще.
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;
}
Большое спасибо, я должен написать это задание на Math.random, но я попробовал ваш способ просто для проверки, даже ваш способ мин проходит 50
Когда вы говорите, что прошло 50 лет, я не уверен, что вы имеете в виду. JavaDoc говорит, что он будет сгенерирован. Но это очень редко, учитывая все возможности. Точно так же, как Math.random будет генерировать 0, но это редко.
о боже, я сделал такую глупую ошибку, вы абсолютно правы, ваш способ работает, мне так стыдно, что я даже не буду упоминать, что я пропустил :D
Уверяю вас, какую бы ошибку вы ни совершили, большинство из нас здесь сделали ее первыми (в тот или иной момент).
Кстати, класс Random также имеет ints(), поэтому вам не нужно умножать, а затем приводить к целому числу.
в этом сегменте вашего кода избавьтесь от плюса, java включает начальный номер, но исключительный в конце. попробуйте избавиться от "+1" и сделать 5000 теперь 5001.
array[i] = ((Math.random() * ((5000 - 50) + 1)) + 50);
array[i] = (int) ((Math.random() * ((5001 - 50)) + 50); это не помогает сейчас мин даже поднимается до 61 даже
Ваша потребность уточнить, что вы хотите. Вы хотите исключить 50? Ваш код показывает 50 как минимум или нет?