CodeGym /Blog Java /Random-PL /Klasa Java.util.Random
Autor
Jesse Haniel
Lead Software Architect at Tribunal de Justiça da Paraíba

Klasa Java.util.Random

Opublikowano w grupie Random-PL

Co to jest klasa java.util.Random w Javie?

Klasa java.util.Random służy do generowania liczb pseudolosowych. Metody zaimplementowane przez tę klasę służą do generowania różnych losowych typów danych, takich jak int, double i float. Istnieją więc dwa główne typy liczb losowych, statystycznie losowe i pseudolosowe . Statystycznie losowe liczby (podobnie jak proste liczby losowe w matematyce) to zbiór wartości, które nie mają rozpoznawalnego wzorca. Na przykład 10-krotny rzut kostką spowoduje wygenerowanie losowej liczby za każdym razem, która nie ma żadnego rozpoznawalnego wzoru.

Co to są liczby pseudolosowe?

Jest to zestaw wartości, które są statystycznie losowe, ale mają znany punkt początkowy . W Javie każda liczba pseudolosowa jest generowana przez algorytm. Tak więc zazwyczaj cykl jest powtarzany za każdym razem, gdy java.util.Random generuje liczbę losową. Generator liczb losowych w Javie będzie generował statystycznie losowe liczby, ale ze znanym punktem początkowym, generowane przez algorytm. To sprawia, że ​​te wartości są pseudolosowe.

Czy klasa java.util.Random jest kryptograficznie niebezpieczna?

Jest kryptograficznie niepewny, ponieważ ma zaimplementowane algorytmy do generowania liczb losowych. Dzięki temu osobie znającej zasady działania algorytmu dostęp do Twoich wrażliwych danych nie zajmie dużo czasu. Więc jeśli pracujesz z niektórymi aplikacjami zabezpieczającymi, potrzebujesz zabezpieczyć niektóre poufne dane lub musisz wygenerować losowe hasła, lepiej unikać używania tej klasy. Jest to pomocne w wielu przypadkach, takich jak generowanie losowej liczby do rzutu kostką w ludo, grach hazardowych, rzucaniu meczu lub w innych obszarach, w których pożądany wynik jest nieprzewidywalny.

Deklaracja metody

Aby korzystać z metod tej klasy, należy najpierw zaimportować ją z pakietu jako

import java.util.Random;
Po zaimportowaniu musisz utworzyć obiekt tej klasy, np

Random randomNumbers = new Random();
Idąc dalej, przyjrzyjmy się różnym przykładom użycia klasy java.util.Random .

Przykład


import java.util.Random;

public class RandomClassExample1 {

	public static void main(String[] args) {

		// create random object
		Random randomNumbers = new Random();
		
		System.out.println("----------Random Boolean---------" );
		/*
		 * Returns the next pseudo random boolean value which 
		 * may be used in a toss for a match
		 */
		boolean value = randomNumbers.nextBoolean();
		System.out.println("The random boolean value is: " + value);
		
		/*
		 * Returns the next pseudo random integer value between 0 and 5  
		 * because if we use '6' then, it will give random numbers from 0 to 6 
		 * hence incrementing it by 1 you can use it as a result of a dice roll
		 */
		System.out.println("\n----------Random Integer---------" );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		
		// return the next pseudo random long value
		Long val = randomNumbers.nextLong();
		System.out.println("\n----------Random Long---------" );
		System.out.println("Random Long value: " + val);
		
		/*
		 * Generates random bytes and puts them in an array, which you can for some
		 * desired unpredictable result that is summing all the values in the array
		 */
		
		System.out.println("\n----------Random Bytes---------" );
		byte[] bytes = new byte[8];
		randomNumbers.nextBytes(bytes);
		
		System.out.print("These are the random bytes = [ ");
		for (int i = 0; i < bytes.length; i++) {
			System.out.printf("%d ", bytes[i]);
		}
		System.out.println("]");
	}

}

Wyjście

----------Losowa wartość logiczna--------- Losowa wartość logiczna to: true ----------Losowa liczba całkowita--------- Die Rzut: 4 Rzut kostką: 6 Rzut kostką: 1 Rzut kostką: 1 Rzut kostką: 3 ----------Losowa długa --------- Losowa długa wartość: -6029959293504570824 ----------Losowe bajty--------- To są losowe bajty = [ -37 90 -98 -70 23 -111 19 108 ]

Metody

Teraz omówimy niektóre metody udostępniane przez tę klasę, pamiętając, że randomNumbers jest obiektem lub instancją naszej klasy.
  1. podwaja() :

    Ta metoda zwraca nieskończoną serię pseudolosowo generowanych podwójnych wartości. Zobaczmy teraz, jak korzystać z tej metody.

    
    randomNumbers.doubles();
    
  2. int() :

    Ta metoda zwraca nieskończoną serię pseudolosowo generowanych wartości całkowitych. Możesz użyć następującego skryptu, aby wywołać tę metodę.

    
    randomNumbers.ints();
    
  3. tęskni() :

    Ta metoda zwraca nieskończoną serię pseudolosowo generowanych długich wartości. Poniższy skrypt służy do wywołania tej metody.

    
    randomNumbers.longs();
    
  4. następna wartość logiczna() :

    Ta metoda zwraca następną równomiernie rozłożoną pseudolosową wartość logiczną z sekwencji generatora liczb losowych. Rozkład jednorodny ma kształt prostokąta, co oznacza, że ​​każda wartość w rozkładzie ma równe prawdopodobieństwo. Oto jak korzystać z tej metody.

    
    randomNumbers.nextBoolean();
    
  5. następnyInt(int n) :

    Ta metoda zwraca następną pseudolosową liczbę całkowitą o rozkładzie równomiernym z sekwencji generatora liczb losowych z przedziału od 0 włącznie do podanej wartości wykluczającej. Zobacz, jak korzystać z tej metody.

    
    randomNumbers.nextInt(10);
    

Wniosek

Mamy nadzieję, że rozumiesz już, czym jest java.util.Random i jak zaimplementować jego różne metody oraz w jakim scenariuszu go używać. Zawsze możesz użyć tej klasy w Javie. Nie krępuj się ćwiczyć i wracaj tutaj, gdy będziesz potrzebować dodatkowej pomocy. Miłej nauki!
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION