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 Response.Write(sb.ToString());
// Ozan Vural'a teşekkürler..
{
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");
}
Bu yazı 13614 kere okundu.



