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.