Random.Next() to metoda klasy Random w języku C#, służąca do losowania liczb całkowitych. Często wykorzystuje się ją np. do wyboru losowego elementu z tablicy, napisu lub listy.
Najważniejsze warianty
var random = new Random();
int a = random.Next(); // liczba całkowita nieujemna
int b = random.Next(10); // liczba od 0 do 9
int c = random.Next(3, 10); // liczba od 3 do 9
Najważniejsza zasada egzaminacyjna: górna granica w Next(min, max) nie jest wliczana.
Czyli:
random.Next(0, 5)
może zwrócić: 0, 1, 2, 3, 4, ale nigdy 5.
Losowanie znaku z napisu
Jeżeli napis ma długość Length, poprawne indeksy znaków to od 0 do Length - 1.
Przykład:
string znaki = "ABC123";
char znak = znaki[random.Next(0, znaki.Length)];
To jest poprawne, ponieważ random.Next(0, znaki.Length) zwróci indeks od 0 do Length - 1.
Typowy błąd
Błędem jest zapis:
int max = znaki.Length - 1;
char znak = znaki[random.Next(0, max)];
Wtedy ostatni znak napisu nie zostanie nigdy wylosowany, ponieważ max nie jest wliczany. Jeśli Length wynosi 10, to max wynosi 9, a Next(0, 9) losuje tylko indeksy od 0 do 8.
W kontekście hasła
Jeżeli pętla wykonuje się 8 razy, powstanie hasło o długości dokładnie 8 znaków. Jeśli pula znaków zawiera małe litery, wielkie litery i cyfry, to hasło może zawierać te typy znaków, ale nie ma gwarancji, że każdy z nich rzeczywiście wystąpi.