Generowanie liczb losowych w zakresie w Javie

1. Przegląd

W tym samouczku zbadamy różne sposoby generowania liczb losowych w określonym zakresie.

2. Generowanie liczb losowych w zakresie

2.1. Math.random

Math.random nadaje losowy podwójną wartość, która jest większa niż lub równa 0,0, a poniżej 1,0.

Użyjmy metody Math.random do wygenerowania liczby losowej z podanego zakresu:

public int getRandomNumber(int min, int max) { return (int) ((Math.random() * (max - min)) + min); }

Dlaczego to działa? Cóż, spójrzmy, co się dzieje, gdy Math.random zwraca 0,0, to najniższe możliwe wyjście:

0.0 * (max - min) + min => min

Zatem najniższa liczba, jaką możemy uzyskać, to min.

Jeśli Math.random zwraca 1.0, jest to najwyższe możliwe wyjście, otrzymujemy:

1.0 * (max - min) + min => max - min + min => max

Tak więc najwyższa liczba, jaką możemy uzyskać, to max.

Zobaczmy, jak ten sam wzór powtórzono z Random # nextInt w następnej sekcji.

2.2. java.util.Random.nextInt

Do tego samego można również użyć instancji java.util.Random .

Skorzystajmy z metody java.util.Random.nextInt , aby uzyskać liczbę losową:

public int getRandomNumberUsingNextInt(int min, int max) { Random random = new Random(); return random.nextInt(max - min) + min; }

Min parametr (współrzędnych) włącznie, natomiast max , związaną jest wyłącznym

2.3. java.util.Random.ints

Metoda java.util.Random.ints zwraca IntStream losowych liczb całkowitych.

Możemy więc skorzystać z metody java.util.Random.ints i zwrócić liczbę losową:

public int getRandomNumberUsingInts(int min, int max) { Random random = new Random(); return random.ints(min, max) .findFirst() .getAsInt(); }

Tutaj również określone początkowe min jest włącznie, a max jest wyłączne.

3. Wniosek

W tym artykule widzieliśmy alternatywne sposoby generowania liczb losowych w określonym zakresie.

Fragmenty kodu, jak zawsze, można znaleźć na GitHub.