Random.Next w C#

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

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.