Java Random Number Generator - Sådan genereres heltal med matematisk tilfældig

Computergenererede tilfældige tal er opdelt i to kategorier: ægte tilfældige tal og pseudo-tilfældige tal.

Ægte tilfældige tal genereres baseret på eksterne faktorer. For eksempel generere tilfældighed ved hjælp af omgivende lyde.

Men at generere et sådant ægte tilfældigt tal er en tidskrævende opgave. Derfor kan vi bruge pseudotilfældige tal, der genereres ved hjælp af en algoritme og en frøværdi.

Disse pseudotilfældige tal er tilstrækkelige til de fleste formål. For eksempel kan du bruge dem i kryptografi, til at opbygge spil som terninger eller kort og til at generere OTP (engangskodeord) numre.

I denne artikel lærer vi, hvordan man genererer pseudotilfældige tal ved hjælp af Math.random()i Java.

1. Brug Math.random () til at generere heltal

Math.random() returnerer et dobbelt pseudo-tilfældigt tal, der er større end eller lig med nul og mindre end et.

Lad os prøve det med en kode:

 public static void main(String[] args) { double randomNumber = Math.random(); System.out.println(randomNumber); } // output #1 = 0.5600740702032417 // output #2 = 0.04906751303932033

randomNumber vil give os et andet tilfældigt tal for hver udførelse.

Lad os sige, at vi vil generere tilfældige tal inden for et bestemt interval, for eksempel nul til fire.

 // generate random numbers between 0 to 4 public static void main(String[] args) { // Math.random() generates random number from 0.0 to 0.999 // Hence, Math.random()*5 will be from 0.0 to 4.999 double doubleRandomNumber = Math.random() * 5; System.out.println("doubleRandomNumber = " + doubleRandomNumber); // cast the double to whole number int randomNumber = (int)doubleRandomNumber; System.out.println("randomNumber = " + randomNumber); } /* Output #1 doubleRandomNumber = 2.431392914284627 randomNumber = 2 */

Når vi kaster en dobbelt til int, beholder int-værdien kun hele taldelen.

For eksempel i ovenstående kode, doubleRandomNumberer 2.431392914284627. doubleRandomNumbers hele tal del er 2og brøkdel (tal efter decimaltegnet) er 431392914284627. Så randomNumbervil kun indeholde hele nummerdelen 2.

Du kan læse mere om Math.random()metoden i Java-dokumentationen.

Brug Math.random()er ikke den eneste måde at generere tilfældige tal på Java på. Dernæst overvejer vi, hvordan vi kan generere tilfældige tal ved hjælp af tilfældig klasse.

2. Brug tilfældig klasse til at generere heltal

I tilfældig klasse har vi mange instansmetoder, der giver tilfældige tal. I dette afsnit vil vi overveje to instansmetoder nextInt(int bound), og nextDouble().

Sådan bruges nextInt (int bound) -metoden

nextInt(int bound) returnerer et int-type pseudo-tilfældigt tal, der er større end eller lig med nul og mindre end den bundne værdi.

Den boundparameter angiver området. For eksempel, hvis vi angiver bunden som 4, nextInt(4)returnerer en int-type værdi, større end eller lig med nul og mindre end fire. 0,1,2,3 er de mulige resultater af nextInt(4).

Da dette er en instansmetode, skal vi oprette et tilfældigt objekt for at få adgang til denne metode. Lad os prøve det.

 public static void main(String[] args) { // create Random object Random random = new Random(); // generate random number from 0 to 3 int number = random.nextInt(4); System.out.println(number); }

Sådan bruges metoden nextDouble ()

Svarende til Math.random(), nextDouble()returnerer et dobbelt pseudo-tilfældigt tal, der er større end eller lig med nul og mindre end en.

 public static void main(String[] args) { // create Random object Random random = new Random(); // generates random number from 0.0 and less than 1.0 double number = random.nextDouble(); System.out.println(number); }

For mere information kan du læse den tilfældige klasses Java-dokumentation.

Så hvilken metode til tilfældigt tal skal du bruge?

Math.random()bruger den tilfældige klasse. Hvis vi kun vil have dobbelt type pseudo-tilfældige tal i vores applikation, så kan vi bruge Math.random().

Ellers kan vi bruge den tilfældige klasse som det giver forskellige metoder til at generere pseudo-tilfældige tal i forskellige typer såsom nextInt(), nextLong(), nextFloat()og nextDouble().

Tak fordi du læste.

Foto af Brett Jordan på Unsplash

Du kan oprette forbindelse til mig på Medium.

Glad kodning!