CodeGym /Java Blog /Willekeurig /Java.util.Random-klasse
John Squirrels
Niveau 41
San Francisco

Java.util.Random-klasse

Gepubliceerd in de groep Willekeurig

Wat is java.util.Random klasse in Java?

De klasse java.util.Random wordt gebruikt om pseudowillekeurige getallen te genereren. De methoden die door deze klasse zijn geïmplementeerd, worden gebruikt om verschillende willekeurige gegevenstypen te genereren, zoals int, double en float. Er zijn dus twee hoofdtypen willekeurige getallen, statistisch willekeurige en pseudowillekeurige getallen . De statistisch willekeurige getallen (zoals eenvoudige willekeurige getallen in wiskunde) zijn een reeks waarden die geen herkenbaar patroon hebben. Als u bijvoorbeeld 10 keer met een dobbelsteen gooit, wordt elke keer een willekeurig getal gegenereerd dat geen herkenbaar patroon heeft.

Wat zijn pseudo-willekeurige getallen?

Het is een reeks waarden die statistisch willekeurig zijn maar een bekend startpunt hebben . In Java wordt elk pseudo-willekeurig getal geproduceerd via een algoritme. Dus meestal wordt een cyclus herhaald elke keer dat java.util.Random een ​​willekeurig getal genereert. Een generator voor willekeurige getallen in Java produceert statistisch willekeurige getallen, maar met een bekend startpunt, gegenereerd door een algoritme. Dat maakt die waarden pseudo-willekeurig.

Is java.util.Random-klasse cryptografisch onveilig?

Het is cryptografisch onveilig omdat er algoritmen zijn geïmplementeerd voor het genereren van willekeurige getallen. Hierdoor zal een persoon die weet hoe het algoritme werkt niet veel tijd nodig hebben om toegang te krijgen tot uw gevoelige gegevens. Dus als u met een aantal beveiligingstoepassingen werkt, gevoelige gegevens moet beveiligen of willekeurige wachtwoorden moet genereren, kunt u deze klasse beter niet gebruiken. Het is in veel gevallen nuttig, zoals het genereren van een willekeurig getal voor uw dobbelsteenworp bij ludo, gokken, opgooien voor een wedstrijd of andere gebieden waar het gewenste resultaat onvoorspelbaar is.

Methode verklaring

Om de methoden van deze klasse te gebruiken, moet u deze eerst importeren uit het pakket als

import java.util.Random;
Na het importeren moet u een object van deze klasse maken, zoals

Random randomNumbers = new Random();
Laten we verder gaan en verschillende voorbeelden bekijken om de klasse java.util.Random te gebruiken .

Voorbeeld


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("]");
	}

}

Uitgang

----------Random Boolean--------- De random boolean waarde is: true ----------Random Integer--------- Die Roll: 4 Die Roll: 6 Die Roll: 1 Die Roll: 1 Die Roll: 3 ----------Random Long--------- Random Long value: -6029959293504570824 ---- ------Willekeurige Bytes--------- Dit zijn de willekeurige bytes = [ -37 90 -98 -70 23 -111 19 108 ]

methoden

Nu zullen we enkele van de methoden van deze klasse bespreken, rekening houdend met het feit dat randomNumbers het object of de instantie van onze klasse is.
  1. verdubbelt() :

    Deze methode retourneert een oneindige reeks pseudowillekeurig gegenereerde dubbele waarden. Laten we nu kijken hoe we deze methode kunnen gebruiken.

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

    Deze methode retourneert een oneindige reeks pseudowillekeurig gegenereerde integerwaarden. U kunt het volgende script gebruiken om deze methode aan te roepen.

    
    randomNumbers.ints();
    
  3. lang() :

    Deze methode retourneert een oneindige reeks pseudowillekeurig gegenereerde lange waarden. Het volgende script wordt gebruikt om deze methode aan te roepen.

    
    randomNumbers.longs();
    
  4. volgendeBoolean() :

    Deze methode retourneert de volgende uniform verdeelde pseudowillekeurige Booleaanse waarde uit de generatorreeks voor willekeurige getallen. De uniforme verdeling is rechthoekig van vorm, wat betekent dat elke waarde in de verdeling een gelijke waarschijnlijkheid heeft. Hier leest u hoe u deze methode gebruikt.

    
    randomNumbers.nextBoolean();
    
  5. volgendeInt(int n) :

    Deze methode retourneert de volgende uniform verdeelde pseudowillekeurige integerwaarde uit de reeks generator van willekeurige getallen tussen 0 inclusief en de opgegeven waarde exclusief. Bekijk snel hoe u deze methode kunt gebruiken.

    
    randomNumbers.nextInt(10);
    

Conclusie

We hopen dat je nu begrijpt wat java.util.Random is en hoe je de verschillende methoden kunt implementeren en in welk scenario je het kunt gebruiken. U kunt deze klasse altijd in Java gebruiken. Voel je vrij om te oefenen en kom hier terug wanneer je meer hulp nodig hebt. Veel leerplezier!
Opmerkingen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION