Ardarda rasgele sayı
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..