Ce face Random.ints
ints(cate, start, limita) returnează un IntStream cu cate numere aleatorii din intervalul [start, limita). Pe flux poți aplica orice operație de stream: distinct, sorted, boxed, sum etc.
Fără primul argument, fluxul este infinit; îl limitezi cu limit(n). Asta este util cu distinct(): ints(1, 50).distinct().limit(6) dă 6 numere diferite, ca la loto. Există și longs și doubles.
Parametri
| Parametru | Descriere |
|---|---|
cate |
Câte numere să conțină fluxul (opțional). |
start |
Limita inferioară, inclusivă. |
limita |
Limita superioară, exclusivă. |
Ce returnează
Un IntStream.
Exemple
Exemplul 1: Note aleatorii pentru un test
import java.util.Arrays;
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random r = new Random(5);
int[] note = r.ints(8, 1, 11).toArray();
System.out.println("Note: " + Arrays.toString(note));
System.out.printf("Media: %.2f%n", Arrays.stream(note).average().orElse(0));
}
}
Rezultat
Note: [8, 3, 5, 5, 7, 6, 5, 2]
Media: 5.13
Exemplul 2: Loto 6/49: șase numere diferite, sortate
import java.util.Random;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
Random r = new Random(649);
String bilet = r.ints(1, 50)
.distinct()
.limit(6)
.sorted()
.mapToObj(String::valueOf)
.collect(Collectors.joining(" - "));
System.out.println("Numerele extrase: " + bilet);
}
}
Rezultat
Numerele extrase: 14 - 18 - 25 - 28 - 36 - 44
Greșeli frecvente
- Folosești
ints(1, 50)fărălimit. Fluxul este infinit și programul nu se mai oprește. - Pui
limitînainte dedistinctcând vrei numere diferite. Poți obține mai puține numere decât ai cerut.
Comenzi înrudite
Random: Generator de numere pseudo-aleatorii; nextInt(n) dă un întreg între 0 și n-1. Cu o sămânță fixă, șirul se repetă.Random.nextDouble: nextDouble() dă un număr real între 0.0 și 1.0 (fără 1.0); nextBoolean() dă true sau false cu șanse egale.IntStream.range: Creează șirul de numere întregi dintre două limite: range fără ultima valoare, rangeClosed cu ea inclusă.