Random Class'ının Etkin Kullanımı

8 Ağustos 2008, Cuma, 23:03

2 Yorum RSS comment feed

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)

2 kişi tarafından 3.0 olarak değerlendirildi

  • Currently 3/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Programlama | C# | Deneyimler & Tecrübeler

Konu hakkında 2 yorum bulundu.

  1. Doga Oztuzun Doga Oztuzun diyor ki:

    Random olarak bir string olusturmak istedigimde, genelde senaryom kullanici icin otomatik sifre olusturmak oluyor.

    Bunun icin Guid yaratip ilk 8 karakterini kullaniyorum.

  1. Emrah ÇETİNER Emrah ÇETİNER diyor ki:

    Alternatif fikir için teşekkürler...
    Kullanıcı ve guid diyince aklıma session geldi, session değeride çekilebilir.

    Bu biraz da rasgele değerin ne amaçla ve nerde ihtiyaç duyulduğuna göre değişen bir şey aslında.

Yorum ekle

(gözükmeyecek) (Gravatar simgenizi gösterecek)  

biuquote
  • Yorum
  • Canlı önizleme
Loading



Powered by BlogEngine.NET 1.4.0.0 & Development by Emrah ÇETİNER