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.