C#’ta Rastgele Sayı Üretme: Kapsamlı Bir Kılavuz
Random
Sınıfını Anlamak- Rastgele Tam Sayılar Üretme
- Rastgele Ondalıklı Sayılar Üretme
- Birden Fazla Rastgele Sayı Etkin Bir Şekilde Üretme
- Rastgele Sayı Üreticisinin Tohumlanması
- Kriptografik Olarak Güvenli Rastgele Sayılar
- Sonuç
- SSS
1. Random
Sınıfını Anlamak
C#’ın System.Random
sınıfı, yalancı rastgele sayılar üretmek için birincil araçtır. Bunlar gerçekten rastgele değildir (fiziksel bir entropi kaynağı gerektirir), ancak çoğu uygulama için rastgele görünen dizilerdir. Başlangıç tohumu değerinden belirleyici olarak üretilirler. Aynı tohum aynı diziyi üretir; hata ayıklama için yararlıdır ancak gerçek rastgeleliğe ihtiyaç duyan uygulamalar için hatırlanması çok önemlidir.
2. Rastgele Tam Sayılar Üretme
Temel yöntem Random.Next()
‘tir. Önemli aşırı yüklemeler:
Next()
:int.MaxValue
‘den küçük negatif olmayan bir tam sayı döndürür.Next(maxValue)
:maxValue
‘den küçük negatif olmayan bir tam sayı döndürür (maxValue
pozitif olmalıdır).Next(minValue, maxValue)
:minValue
≥ vemaxValue
< olan bir tam sayı döndürür (maxValue
>minValue
).
Örnek:
using System;
public class RandomNumberGenerator
{
public static void Main(string[] args)
{
Random random = new Random();
int randomNumber1 = random.Next(10); // 0 ile 9 arasında
Console.WriteLine($"Rastgele sayı 1: {randomNumber1}");
int randomNumber2 = random.Next(5, 15); // 5 ile 14 arasında
Console.WriteLine($"Rastgele sayı 2: {randomNumber2}");
}
}
3. Rastgele Ondalıklı Sayılar Üretme
0,0 (dahil) ile 1,0 (hariç) arasında rastgele çift hassasiyetli ondalık sayılar üretmek için random.NextDouble()
kullanın. Diğer aralıklar için bunu ölçeklendirin ve kaydırın:
double randomNumber = random.NextDouble() * 100; // 0.0 ile 100.0 arasında
4. Birden Fazla Rastgele Sayı Etkin Bir Şekilde Üretme
Birçok sayı ürettiğinizde verimlilik için tek bir Random
örneğini yeniden kullanın. Birden fazla örnek oluşturmak (varsayılan yapıcıyı, sistem saati tarafından tohumlanan) hızlı bir şekilde benzer dizilere yol açabilir ve görünen rastgeleliği azaltabilir.
Random random = new Random();
for (int i = 0; i < 10; i++)
{
int randomNumber = random.Next(1, 101); // 1 ile 100 (dahil) arasında
Console.WriteLine($"Rastgele sayı {i + 1}: {randomNumber}");
}
5. Rastgele Sayı Üreticisinin Tohumlanması
Random
yapıcıya bir tohum sağlayarak diziyi kontrol edin:
- Tekrarlanabilirlik: Aynı tohum = aynı dizi (test için gereklidir).
- Belirli diziler: Simülasyonlar için yararlıdır.
Random random1 = new Random(12345);
Console.WriteLine($"12345 tohumuyla rastgele sayı: {random1.Next(100)}");
Random random2 = new Random(12345);
Console.WriteLine($"12345 tohumuyla rastgele sayı (tekrar): {random2.Next(100)}"); // Yukarıdakine aynı
Random random3 = new Random(); // Geçerli zamanı tohum olarak kullanır
Console.WriteLine($"Geçerli zaman tohumuyla rastgele sayı: {random3.Next(100)}");
6. Kriptografik Olarak Güvenli Rastgele Sayılar
Güvenlik açısından hassas uygulamalar için asla System.Random
kullanmayın. Bunun yerine System.Security.Cryptography.RandomNumberGenerator
kullanın.
7. Sonuç
Random
sınıfı kolay yalancı rastgele sayı üretimi sağlar. Tohumlama ve örnek yeniden kullanımını anlamak hem tekrarlanabilirlik hem de verimlilik için önemlidir. Güvenlik için kriptografik RNG’leri önceliklendirin.
8. SSS
S: Sayılar gerçekten rastgele mi? C: Hayır, yalancı rastgele. Rastgele görünüyorlar ancak belirleyici olarak üretiliyorlar.
S: Rastgele ondalık sayılar nasıl üretilir? C: Gerektiği gibi ölçeklendirmek ve kaydırmak için random.NextDouble()
kullanın.
S: Kriptografik olarak güvenli rastgele sayılar ne olacak? C: System.Security.Cryptography.RandomNumberGenerator
kullanın.