To dziwne, ale niekiedy w programie trzeba wygenerować coś przypadkowego. Może chodzi o jakiś klucz zabezpieczeń, jakieś hasło, może zmieniający się z sesji na sesję token itp. W takim przypadku lepiej zdać się na dopracowane metody generowania liczb pseudolosowych wbudowanych w .NET.
Mamy taką klasę, jak Random. Random potrafi generować liczby całkowite, double i wreszcie tablice bajtów wypełnione przypadkowymi danymi.
Aby skorzystać z generatora najpierw musisz utworzyć obiekt:
Random _random=new Random();Do konstruktora można przekazać tzw. seed – liczbę która posłuży do zainicjowania generatora. Wartość ta powinna również być dość przypadkowa (np. bieżąca liczba milisekund z zegara systemowego plus ostatnie cyfry adresu IP…), jeżeli jednak pominiesz ten argument konstruktor sam zadba o wygenerowanie własnej przypadkowej liczby seed.
Aby pobierać kolejne losowe wartości użyj metod:
- _random.Next() ;
zwraca liczbę całkowitą, nieujemną - _random.Next(i);
zwraca liczbę całkowitą nieujemną mniejszą od i - _random.Next(i,j)
zwraca liczbę całkowitą >=i i <j - _random.NextDouble()
zwraca liczbę double między 0.0, a 1.0 - _random.NextBytes(bufor)
wypełnia bufor losowymi liczbami
Aby więc generować losowe litery z przedziału ‘A’ – ‘Z’ można użyć:
(char)_random.Next(’A’, 'Z’ + 1));Aby generować znaki cyfr można użyć:
(char)_random.Next(’0′, '9′ + 1));Metoda generująca losowy ciąg znaków może więc wyglądać tak:
public static string GetRandomString(int length) { Random _random=new Random(); StringBuilder builder= new StringBuilder(); for(int i =0; i<length;i++) builder.Append((char)_random.Next(’A’, 'Z’ + 1)); return builder.ToString(); }Pozostaje życzyć, aby los zawsze Ci sprzyjał!