Willekeurige getallen genereren in een bereik in Java

1. Overzicht

In deze zelfstudie onderzoeken we verschillende manieren om willekeurige getallen binnen een bereik te genereren.

2. Willekeurige getallen in een bereik genereren

2.1. Math.willekeurig

De Math.willekeurig geeft een willekeurig dubbele waarde die groter is dan of gelijk is aan 0,0 en kleiner dan 1,0.

Laten we de Math.willekeurig methode om een ​​willekeurig getal in een bepaald bereik te genereren:

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

Waarom werkt dat? Laten we eens kijken wat er gebeurt wanneer Math.willekeurig geeft 0,0 terug, het is de laagst mogelijke uitvoer:

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

Dus het laagste aantal dat we kunnen krijgen is min.

Als Math.willekeurig geeft 1,0 terug, het is de hoogst mogelijke uitvoer, dan krijgen we:

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

Dus het hoogste aantal dat we kunnen krijgen is max. hoogte

Laten we hetzelfde patroon eens bekijken met Willekeurig # nextInt in de volgende sectie.

2.2. java.util.Random.nextInt

Een exemplaar van java.util.Random kan ook worden gebruikt om hetzelfde te doen.

Laten we gebruik maken van de java.util.Random.nextInt methode om een ​​willekeurig nummer te krijgen:

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

De min parameter (de oorsprong) is inclusief, terwijl de max. hoogte, de gebonden, is exclusief

2.3. java.util.Random.ints

De java.util.Random.ints methode retourneert een IntStream van willekeurige gehele getallen.

We kunnen dus de java.util.Random.ints methode en retourneer een willekeurig getal:

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

Ook hier de opgegeven oorsprong min is inclusief en max. hoogte is exclusief.

3. Conclusie

In dit artikel hebben we alternatieve manieren gezien om willekeurige getallen binnen een bereik te genereren.

Codefragmenten zijn, zoals altijd, te vinden op GitHub.