Ana SayfaBlogHakkımdaİletişim

Ardarda rasgele sayı

04.01.2007 11:59

Bir döngü içerisinde birbirinden farklı rasgele sayıya ürettiğinizde sayıların neredeyse aynı olduğunu göreceksiniz. Rasgele sayı üretiminde kullanılan algoritmadaki parametreler sistem saatinden alındığı için döngü içerisinde üretilen sayılar birbirine çok yakın yada aynı olacaktır.

Bunu engellemek için döngü içinde System.Threading.Thread.Sleep(123); yazıp döngüyü biraz yavaşlatıp sistem saatinin değişmesini bekleyebilirsiniz ancak. Bu programınızın oldukça yavaşlamasına neden olacaktır.

Daha hızlı bir yöntem için ise aşağıdaki biri Random sınıfına bir Seed değeri atayabilirsiniz :  

System.Text.StringBuilder sb = new System.Text.StringBuilder();

for (int i = 0; i < 1000; i++)
{
    byte[] RandomBytes = new byte[4];
    System.Security.Cryptography.
RNGCryptoServiceProvider rng;
    rng =
new System.Security.Cryptography.RNGCryptoServiceProvider();
    rng.GetBytes(RandomBytes);
    // Convert 4 bytes into a 32-bit integer value.
    int Seed = (RandomBytes[0] & 0x7f) << 24 | RandomBytes[1] << 16 | RandomBytes[2] << 8 | RandomBytes[3];
    Random Rnd = new Random(Seed);
    int rasgele = Rnd.Next(1, 10);
    sb.AppendFormat("{0}\n");
}

Response.Write(sb.ToString());

 // Ozan Vural'a teşekkürler..

Bu yazı 13614 kere okundu.

Yorumlar

Yorum Ekle

sen dinliyorum ??

Ad Soyad ( kimlik arayışındaki ergenler nick girebilir )

Web Site ( http ile başlayan ! )

E-posta ( spam ve reklam göndermek için )

Yorum ( XSS atack scriptleri eklenecek alan )

Blog yazılarına geri dön