Liczby pseudolosowe

Pisząc programy w Javie często potrzebujemy wylosować jakąś wartość. Standardowo mamy dwie możliwości wygenerowania liczby pseudolosowej. Pierwsza, to skorzystanie z klasy Random dostępnej w pakiecie java.util. Klasa ta zawiera szereg przydatnych metod generujących liczby losowe. Wadą tego rozwiązania jest konieczność utworzenia nowego obiektu.
// wykorzystujemy klasę Random z pakietu java.util
import java.util.*;

/**
 * Generowanie liczb pseudolosowych
 * @author kodatnik.blogspot.com 
 */ 
public class LiczbyPseudolosowe {
  
 public static void main (String[] args) {
   
  // tworzymy obiekt klasy Random
  Random rand = new Random();
   
  // metoda nextInt() zwraca liczbę całkowitą (pełny zakres)
  int liczbaCalkowita = rand.nextInt();
      
  // metoda nextInt(int n) zwraca liczbę z zakresu >= 0 do < n-1
  int liczbaCalkowitaZakres = rand.nextInt(10);
   
  // metoda nextDouble() zwraca liczbę rzeczywistą z zakresu >= 0.0 do < 1.0
  double liczbaRzeczywista = rand.nextDouble();   
   
  System.out.println ("Wylosowana liczba całkowita: " + liczbaCalkowita);
  System.out.println ("Wylosowana liczba całkowita z zakresu <0, 10): " + liczbaCalkowitaZakres);   
  System.out.println ("Wylosowana liczba rzeczywista z zakresu <0.0, 1.0): " + liczbaRzeczywista);       
 }
}
Uruchomiona aplikacja:
Wylosowana liczba całkowita: 1133804662
Wylosowana liczba całkowita z zakresu <0, 10): 0
Wylosowana liczba rzeczywista z zakresu <0.0, 1.0): 0.06242174947663559
Drugi sposób to wykorzystanie statycznej metody random() dostępnej w klasie Math. Generuje ona pseudolosową liczbę rzeczywistą z zakresu od 0.0 włącznie do 1.0 wyłącznie. Tak otrzymaną liczbę zazwyczaj musimy przemnożyć przez odpowiednią wartość oraz dokonać rzutowania do pożądanego typu. Na przykład, gdy chcemy uzyskać liczbę z zakresu od 1 do 10, musimy posłużyć się takim kodem:
int liczbaLosowa = (int) (Math.random() * 10 + 1);
Często potrzebujemy liczbę z zadanego zakresu. Poniższa metoda losuj(int, int) generuje liczby losowe całkowite z zakresu przekazanego jako parametry jej wywołania.
/**
 * Generowanie liczb pseudolosowych
 * @author kodatnik.blogspot.com 
 */ 
public class LiczbyPseudolosowe {
  
 // metoda zwraca liczbę całkowitą z zakresu >= min do < max
 public static int losuj(int min, int max) {
  return (int) (Math.random() * (max - min) + min);
 }

 public static void main (String[] args) {
   
  // Losujemy 10 liczb całkowitych z zakresu od 20 do 40
  for (int i = 0; i < 10; i++) 
   System.out.print(losuj(20, 40) + " ");
 }
}
Uruchomiona aplikacja:
25 34 20 22 23 22 36 26 30 34


0 Komentarzy - Liczby pseudolosowe

Prześlij komentarz

Możesz użyć niektórych tagów HTML, takich jak <b>, <i>, <u>, <a> Nie spamuj :)

Popularne posty