Random Integer
Aşağıdaki kod bize 10 ile 99 aralığında, yani 2 basamaklı rasgele bir sayı getirir.
Next fonksiyonunun maxValue parametresi, değerinin bir eksiğini kabul eder.
Eğer 99'un da sonuç olarak dönebilmesini istiyorsak, parametre olarak 100 vermemiz gerekir.
001Random rnd = new Random();
002rnd.Next(10, 99+1);
Bu kodu birden fazla çağırmaya ihtiyaç duyduğumuz zaman, örneğin bir for döngüsüne soktuğumuz zaman bize sürekli aynı sonucu döndürecektir. Bunu engellemek için Random class'ının instance'ını alırken Seed parametresi vermemiz gerekir. Ve bu parametre her seferinde değişik olmaliki bize her seferinde değişik sonuç döndürsün. Eğer bir for döngüsü içersindeydek, döngü index'ini Seed paramteresi olarak vermek sorunu çözecektir.
001for (int i = 0; i < 10; i++)
002{
003 Random rnd = new Random(i);
004 rnd.Next(10, 99+1);
005}
Bu sorunun bir başka çözümü ise Random class'ının instance'ını döngü dışında almak olacaktır.
001Random rnd = new Random();
002for (int i = 0; i < 10; i++)
003{
004 rnd.Next(10, 99+1);
005}
Son bir not; Bazen rasgele bir sayıyı o gün için veya içinde bulunduğumuz saat, dakika için yaratmamız gerekebilir.
Örneğin sitemizde rasgele resimler göstermek istiyoruz, ancak bu rasgele resimlerin her gün veya her saat başı değişmesini istiyoruz.
O zaman yapmamız gereken Seed parametresi olarak o günü, saati vermek olacaktır.
001Random rnd = new Random(DateTime.Now.Day);
002rnd.Next(10, 99 + 1);
Random String
Aşağıdaki kod bloğu bize, belirttiğimiz uzunlukta ve belirttiğimiz karakterlerden oluşan bir string döndürecektir.
001int size = 8;
002string validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
003StringBuilder sb = new StringBuilder();
004int validCharsLength = validChars.Length;
005Random rnd = new Random();
006while (0 < size--)
007 sb.Append(validChars[rnd.Next(validCharsLength)]);
008
009
010sb.ToString();
Yukarıdaki fonksiyonları içeren dll'i aşağıdan indirebilirsiniz.
ECRandomValues.rar (2,12 kb)