Generering af tilfældige numre inden for et interval i Java

1. Oversigt

I denne vejledning undersøger vi forskellige måder at generere tilfældige tal inden for et interval.

2. Generering af tilfældige tal inden for et interval

2.1. Matematik. Tilfældig

Det Matematik. Tilfældig giver en tilfældig dobbelt værdi, der er større end eller lig med 0,0 og mindre end 1,0.

Lad os bruge Matematik. Tilfældig metode til at generere et tilfældigt tal i et givet interval:

public int getRandomNumber (int min, int max) {return (int) ((Math.random () * (max - min)) + min); }

Hvorfor fungerer det? Lad os se på, hvad der sker, hvornår Matematik. Tilfældig returnerer 0,0, det er den lavest mulige output:

0,0 * (max - min) + min => min

Så det laveste antal, vi kan få, er min.

Hvis Matematik. Tilfældig returnerer 1.0, det er den højest mulige output, så får vi:

1,0 * (max - min) + min => max - min + min => max

Så det højeste antal, vi kan få, er maks.

Lad os se det samme mønster gentaget med Tilfældig # næsteInt i det næste afsnit.

2.2. java.util.Random.nextInt

En forekomst af java.util. tilfældighed kan også bruges til at gøre det samme.

Lad os gøre brug af java.util.Random.nextInt metode til at få et tilfældigt tal:

public int getRandomNumberUsingNextInt (int min, int max) {Random random = new Random (); return random.nextInt (max - min) + min; }

Det min parameter (oprindelsen) er inklusive, mens maks, den bundne, er eksklusiv

2.3. java.util.Random.ints

Det java.util.Random.ints metode returnerer en IntStream af tilfældige heltal.

Så vi kan bruge java.util.Random.ints metode og returnere et tilfældigt tal:

public int getRandomNumberUsingInts (int min, int max) {Random random = new Random (); returner random.ints (min, max) .findFirst () .getAsInt (); }

Også her, den angivne oprindelse min er inkluderende og maks er eksklusiv.

3. Konklusion

I denne artikel så vi alternative måder at generere tilfældige tal inden for et interval.

Kodestykker kan som altid findes på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found