Klasa Random: losowanie liczb
Klasy biblioteczne: Math, Random, String, Scanner - Podstawy Javy (Java)
Opis metod klasy Random: Konstruktory: Random() - tworzy generator z losowym ziarnem Random(long seed) - tworzy generator z określonym ziarnem Metody generujące liczby całkowite: nextInt() - generuje losową liczbę int z całego zakresu nextInt(int bound) - generuje losową liczbę z zakresu [0, bound) Metody generujące liczby zmiennoprzecinkowe: nextDouble() - generuje liczbę double z zakresu [0.0, 1.0) nextFloat() - generuje liczbę float z zakresu [0.0, 1.0) Inne metody: nextBoolean() - generuje losową wartość logiczną nextLong() - generuje losową liczbę typu long nextBytes(byte[] bytes) - wypełnia tablicę losowymi bajtami nextGaussian() - generuje liczbę z rozkładu normalnego Właściwości: Thread-safe - bezpieczna w środowisku wielowątkowym Deterministyczna przy użyciu tego samego ziarna Generuje sekwencje pseudolosowe
import java.util.Random;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
// Inicjalizacja generatora liczb losowych
Random random1 = new Random(); // Domyślne ziarno (based on current time)
Random random2 = new Random(42); // Ustawienie własnego ziarna
System.out.println("=== LICZBY CAŁKOWITE (nextInt) ===");
// nextInt() - zwraca losową liczbę całkowitą z całego zakresu int
System.out.println("Losowa liczba całkowita: " + random1.nextInt());
// nextInt(bound) - zwraca losową liczbę z zakresu [0, bound)
System.out.println("Losowa liczba 0-99: " + random1.nextInt(100));
// Generowanie liczb z określonego zakresu [min, max]
int min = 10;
int max = 20;
int randomInRange = random1.nextInt(max - min + 1) + min;
System.out.println("Losowa liczba " + min + "-" + max + ": " + randomInRange);
System.out.println("\n=== LICZBY ZMIENNOPRZECINKOWE ===");
// nextDouble() - zwraca losową liczbę [0.0, 1.0)
System.out.println("Losowa liczba double [0.0-1.0): " + random1.nextDouble());
// nextFloat() - zwraca losową liczbę float [0.0, 1.0)
System.out.println("Losowa liczba float [0.0-1.0): " + random1.nextFloat());
// Generowanie liczb zmiennoprzecinkowych z zakresu
double minDouble = 5.0;
double maxDouble = 10.0;
double randomDouble = minDouble + (random1.nextDouble() * (maxDouble - minDouble));
System.out.printf("Losowa liczba double %.2f-%.2f: %.2f%n", minDouble, maxDouble, randomDouble);
System.out.println("\n=== WARTOŚCI LOGICZNE ===");
// nextBoolean() - zwraca losową wartość true/false
System.out.println("Losowa wartość logiczna: " + random1.nextBoolean());
System.out.println("\n=== LICZBY DŁUGIE (nextLong) ===");
// nextLong() - zwraca losową liczbę long
System.out.println("Losowa liczba long: " + random1.nextLong());
System.out.println("\n=== BAJTY ===");
// nextBytes() - wypełnia tablicę losowymi bajtami
byte[] bytes = new byte[5];
random1.nextBytes(bytes);
System.out.println("Tablica losowych bajtów: " + Arrays.toString(bytes));
System.out.println("\n=== GAUSSIAN DISTRIBUTION ===");
// nextGaussian() - zwraca liczbę z rozkładu normalnego
// średnia = 0.0, odchylenie standardowe = 1.0
System.out.println("Liczba z rozkładu normalnego: " + random1.nextGaussian());
System.out.println("\n=== DEMONSTRACJA ZIARNA (SEED) ===");
// Demonstracja, że to samo ziarno generuje tę samą sekwencję
Random r1 = new Random(50);
Random r2 = new Random(50);
System.out.println("Generator 1: " + r1.nextInt(100));
System.out.println("Generator 2: " + r2.nextInt(100));
System.out.println("\n=== PRZYKŁAD PRAKTYCZNY ===");
// Generowanie losowej tablicy i jej sortowanie
int[] randomArray = new int[10];
for (int i = 0; i < randomArray.length; i++) {
randomArray[i] = random1.nextInt(100);
}
System.out.println("Wygenerowana tablica: " + Arrays.toString(randomArray));
Arrays.sort(randomArray);
System.out.println("Posortowana tablica: " + Arrays.toString(randomArray));
}
} Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu Podstawy Javy · Zaloguj się, aby zapisać postęp na koncie.