Java Willekeurig

Java Random-klasse wordt gebruikt om een reeks willekeurige getallen te genereren.

Java Random-klasse

  • Random-klasse maakt deel uit van het java.util-pakket.
  • Een instantie van de Java Random-klasse wordt gebruikt om willekeurige getallen te genereren.
  • Deze klasse biedt verschillende methoden om willekeurige getallen van het type integer, double, long, float, enz. te genereren.
  • Het algoritme voor het genereren van willekeurige getallen werkt op basis van de zaaigetallen. Indien niet opgegeven, wordt het zaaigetal gemaakt op basis van de systeem-nanotijd.
  • Als twee instanties van Random dezelfde zaaigetal hebben, genereren ze dezelfde reeks willekeurige getallen.
  • De Java Random-klasse is thread-safe, maar in een multithreading-omgeving wordt geadviseerd om de java.util.concurrent.ThreadLocalRandom-klasse te gebruiken.
  • Instanties van de Random-klasse zijn niet geschikt voor beveiligingsgevoelige toepassingen; in die gevallen is het beter om java.security.SecureRandom te gebruiken.

Constructors van de Java Random-klasse

De Java Random-klasse heeft twee constructors, zoals hieronder beschreven:

  1. Random(): maakt een nieuwe willekeurige generator
  2. Random(long seed): maakt een nieuwe willekeurige generator met een opgegeven zaaigetal

Java Random Class Methoden

Laten we eens kijken naar enkele methoden van de Java Random-klasse.

  1. nextBoolean(): Deze methode retourneert de volgende pseudowillekeurige boolean-waarde uit de willekeurige getallengeneratorsequentie.
  2. nextDouble(): Deze methode retourneert de volgende pseudowillekeurige dubbele waarde tussen 0.0 en 1.0.
  3. nextFloat(): Deze methode retourneert de volgende pseudowillekeurige zwevende komma-waarde tussen 0.0 en 1.0.
  4. nextInt(): Deze methode retourneert de volgende int-waarde uit de willekeurige getallengeneratorsequentie.
  5. nextInt(int n): Deze methode retourneert een pseudowillekeurige int-waarde tussen 0 en de gespecificeerde waarde uit de willekeurige getallengeneratorsequentie.

Java Random Voorbeeld

Laten we eens kijken naar het onderstaande voorbeeldprogramma voor Java Random.

package com.journaldev.examples;

import java.util.Random;

/**
 * Java Random Number Example Program
 * 
 */
public class RandomNumberExample {

	public static void main(String[] args) {
		
		// initialiseren van de willekeurige getallengenerator
		Random random = new Random();
		
		// genereert een boolean-waarde
		System.out.println(random.nextBoolean());
		
		// genereert een dubbele waarde
		System.out.println(random.nextDouble());
		
		// genereert een zwevende komma-waarde
		System.out.println(random.nextFloat());
		
		// genereert een int-waarde
		System.out.println(random.nextInt());
		
		// genereert een int-waarde within specific limit
		System.out.println(random.nextInt(20));

	}

}

De uitvoer van het bovenstaande programma is:

false
0.30986869120562854
0.6210066
-1348425743
18

Bekijk deze post voor meer informatie over Java Random Nummer Generatie.

Genereer een Willekeurig Nummer met een Seed

Er zijn twee manieren waarop we een willekeurig nummer kunnen genereren met een seed.

Random random = new Random(long seed);
                         
Random random1 = new Random();
random1.setSeed(seed);

De seed is de initiële waarde van de interne status van de pseudowillekeurige nummergenerator die wordt bijgehouden door de methode next(int).

package com.journaldev.examples;

import java.util.Random;

/**
 * Java Random Number Using Seed Example Program
 * 
 * @author pankaj
 *
 */
public class RadomSeedExample {

	public static void main(String[] args) {
		
		//gebruikmakend van de constructor
		Random random = new Random(100);
		System.out.println("Using Constructor");
		System.out.println(random.nextInt());
		
		//gebruikmakend van de methode
		Random random2 = new Random();
		random2.setSeed(200);
		System.out.println("Using Method");
		System.out.println(random2.nextInt());
	}
}

De output van het bovenstaande programma is:

Using Constructor
-1193959466
Using Method
-1133938638

Wat gebeurt er als we dezelfde seed doorgeven aan twee verschillende willekeurige nummergenerators? Laten we eens kijken naar het onderstaande programma en zien wat er gebeurt als we dezelfde seed doorgeven aan twee verschillende willekeurige nummergenerators.

package com.journaldev.examples;

import java.util.Random;

/**
 * Java Random Number Using Same Seed Example Program
 * 
 */
public class RandomNumberSameSeedExample {

	public static void main(String[] args) {
		
		//initialiseer twee willekeurige nummergenerators met dezelfde seed
		Random random1 = new Random(100);
		Random random2 = new Random(100);
		
		System.out.println(random1.nextInt());
		System.out.println(random2.nextInt());

	}

}

De output van het bovenstaande programma is:

-1193959466
-1193959466

We kunnen zien dat het dezelfde willekeurige nummer genereert als we dezelfde seed doorgeven aan twee verschillende willekeurige nummergenerators.

Java 8 Random Class Methoden

Zoals je kunt zien op de bovenstaande afbeelding, zijn er veel nieuwe methoden toegevoegd in Java 8 aan de Random-klasse. Deze methoden kunnen een stroom van willekeurige getallen produceren. Hieronder staat een eenvoudig programma om een stroom van 5 gehele getallen tussen 1 en 100 te genereren.

package com.journaldev.random;

import java.util.Random;
import java.util.stream.IntStream;

public class JavaRandomExample {

	public static void main(String[] args) {

		Random random = new Random();

		// genereer een stroom van 5 integers tussen 1 en 100
		IntStream ints = random.ints(5, 1, 100);

		ints.forEach(System.out::println);
	}

}

Dat is alles voor een snelle samenvatting over de Java Random-klasse. Referentie: API-documentatie

Source:
https://www.digitalocean.com/community/tutorials/java-random