C# Programming

C#’da Rastgele Sayı Üretme: Kapsamlı Bir Kılavuz

Spread the love

C#’ta Rastgele Sayı Üretme: Kapsamlı Bir Kılavuz

  1. Random Sınıfını Anlamak
  2. Rastgele Tam Sayılar Üretme
  3. Rastgele Ondalıklı Sayılar Üretme
  4. Birden Fazla Rastgele Sayı Etkin Bir Şekilde Üretme
  5. Rastgele Sayı Üreticisinin Tohumlanması
  6. Kriptografik Olarak Güvenli Rastgele Sayılar
  7. Sonuç
  8. 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 ≥ ve maxValue < 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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir