Generarea de numere aleatorii într-un interval în Java

1. Prezentare generală

În acest tutorial, vom explora diferite moduri de a genera numere aleatorii într-un interval.

2. Generarea numerelor aleatorii într-un interval

2.1. Matematică.aleatorie

Math.random dă o întâmplare dublă valoare care este mai mare sau egal cu 0,0 și mai mică de 1,0.

Să folosim metoda Math.random pentru a genera un număr aleatoriu într-un interval dat:

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

De ce funcționează? Ei bine, să ne uităm la ce se întâmplă când Math.random returnează 0.0, este cea mai mică ieșire posibilă:

0.0 * (max - min) + min => min

Deci, cel mai mic număr pe care îl putem obține este min.

Dacă Math.random returnează 1.0, este cea mai mare ieșire posibilă, atunci obținem:

1.0 * (max - min) + min => max - min + min => max

Deci, cel mai mare număr pe care îl putem obține este max.

Să vedem același model repetat cu Random # nextInt în secțiunea următoare.

2.2. java.util.Random.nextInt

O instanță de java.util.Random poate fi, de asemenea, utilizată pentru a face același lucru.

Să folosim metoda java.util.Random.nextInt pentru a obține un număr aleatoriu:

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

Min parametru (originea) este inclusiv, în timp ce max , a legăturii, este exclusivă

2.3. java.util.Random.ints

Metoda java.util.Random.ints returnează un IntStream de numere întregi aleatorii.

Deci, putem utiliza metoda java.util.Random.ints și să returnăm un număr aleatoriu:

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

Și aici, originea min specificată este inclusă și max este exclusivă.

3. Concluzie

În acest articol, am văzut modalități alternative de generare a numerelor aleatorii într-un interval.

Fragmente de cod, ca întotdeauna, pot fi găsite pe GitHub.