Problem z tablicą intow w ktorej bedzie 100 losowych liczb

0

Cześć
Jestem początkującym w Javie i staram się rozwiązać zadanie, które przysparza mały ból głowy
Zadanie brzmi: stworz tablice intow w ktorej bedzie 100 losowych liczb z zakresu 0-1000

  • znajdz najwiekszy element
  • oblicz srednia arytmetyczna
  • oblicz mediane
    Póki co stworzyłęm tablicę 100 losowych liczb z zakresu 0-1000, która znajduje największy element - przynajmniej tak mi się wydaje.
    Prosiłbym o rzucenie okiem na mój kod i wskazówki jak obliczyć średnią arytmetyczną, medianę i polączyć to w całość
import java.util.Arrays;
import java.util.List;
import java.util.Random;

public class Figures {



    public static void main(String[] args) {

        int[] randomArray = new int[100];

        for(int i=0; i<randomArray.length; i++)
            randomArray[i] = (int) (Math.random() * 1000);
        for(int i=0; i<randomArray.length; i++)
            System.out.println(randomArray[i]);
    }
0
starskyHutch napisał(a):

import java.util.Arrays;
import java.util.List;
import java.util.Random;

Nie używasz tego

starskyHutch napisał(a):

randomArray[i] = (int) (Math.random() * 1000);

1001 chyba powinno być

starskyHutch napisał(a):

Prosiłbym o rzucenie okiem na mój kod i wskazówki jak obliczyć średnią arytmetyczną, medianę i polączyć to w całość

Robisz tak jak w matematyce, nie do końca rozumiem w czym problem.

0

Zeby obliczyc srednia stworz zmienna np. sum i w petli ktora losuje liczbe zrob tak, zeby dodawalo ta liczbe do twojej zmiennej (w tym przypadku sum). Dalej powinienes sobie poradzic.
Zeby obliczyc mediane (i jednoczesnie znajdziesz najwieksza liczbe) w javie bodajze bylo cos takiego jak Arrays.sort(), ale reki sobie nie dam uciac. Jjak masz juz posortowane liczby to raczej nie powinienes miec dalszych problemow z wykonaniem zadania.

0

Mógłby ktoś bardziej doświadczony rzucić okiem i nanieść poprawki?

public static void main(String[] args) {

        int[] randomArray = new int[100];

        for (int i = 0; i < randomArray.length; i++)
            randomArray[i] = (int) (Math.random() * 1001);
        for (int i = 0; i < randomArray.length; i++)
            System.out.println(randomArray[i]);
    }

    public static int getMean(int[] data) {
        if (data.length == 0) {
            return 0;
        }
        int sum = (int) 0.0;
        for (int index = 0; index != data.length; ++index) {
            sum += data[index];
        }
        return sum / data.length;

    }

    public static double median(double[] m) {
        int middle = m.length / 2;
        if (m.length % 2 == 1) {
            return m[middle];
        } else {
            return (m[middle - 1] + m[middle]) / 2.0;
        }
    }
}

0
for (int value : data) {
      sum += value;
}

Albo nawet:

int sum = Arrays.stream(data).reduce(0, Integer::sum);

Poza tym zdecyduj się czy chcesz double czy int.

0
import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        int[] randomArray = new int[100];
        float sum = 0;
        float mediana = 0;

        for (int i = 0; i < randomArray.length; i++){
            randomArray[i] = (int) (Math.random() * 1001);
            sum+=randomArray[i];                                   
        }

        Arrays.sort(randomArray);
        System.out.println("Mediana: " + median(randomArray));
        System.out.println("Srednia: " + sum/randomArray.length);
        System.out.println("Najwieksza liczba" + randomArray[randomArray.length-1]);
    }

    public static double median(int[] array) {
        int middle = array.length / 2;
        if (array.length % 2 == 1) {
            return array[middle];
        } else {
            return (array[middle - 1] + array[middle]) / 2;
        }
    }
}

Nie wiem czy zaliczam sie do "bardziej doswiadczonych", ale ja zrobilbym to tak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1