Eşsiz Rastgele Sayı Üretme

C# ile üretilen Rastgele sayılar Pseudo Random yani Yalancı rastgele sayılardır. Bu sayılar tekrar edebilir, yani 1 ila 20 arasında 10 sayı üret dediğinizde bu 10 sayının aynı üretilme ihtimali vardır. Bu yazımızda eşsiz şekilde sayı üretmeye çalışacağız.
 
Bu işlem için şöyle bir algoritma kurduk, 10 sayı üreteceksek 10 elemanlı bir dizi oluşturuyoruz. Sonra sonsuz bir döngü açıyoruz. ürettiğimiz sayı bu dizide var mı kontrol ediyoruz, yoksa diziye ekliyoruz, varsa tekrar ürettiriyoruz. 
 
Önce aşağıdaki gibi bir form tasarlıyoruz. Burada Rastgele Üret (Normal) klasik yöntemlerle rastgele sayı üretip Listbox nesnemize(ismini lbRastgele verdik) dolduruyor. İkinci yöntemde ise Rastgele eşsiz sayı ürettiriyoruz.




Klasik şekilde rastgele sayı üretme buton Click olayını içeriği aşağıdaki gibidir. Şimdiye kadar farklı örneklerde yaptığımı bu yöntemde aynı sayının üretilebilme ihtimali her zaman vardır. 

 private void btnRastgele_Click(object sender, EventArgs e)
        {
            int[] dizi = new int[10];
            Random rastgele = new Random();
            int sayi;
            lbRastgele.Items.Clear();
 
            for(int i=0;i<10;i++)
            {
                sayi= rastgele.Next(1, 100); //1...99 a kadar üretir, bu sayılar dahil
                lbRastgele.Items.Add(sayi);
            }
          
 
        }
 
Eşssiz Rastgele Sayı Üret button Click olayının  içeriği aşağıdaki gibidir. Burada dizimizde üretilen sayı olup olmadığını Contains metodu ile   if (!dizi.Contains(sayi)) şeklinde kontrol ettiryoruz. Contains metoduna parametre olarak verdiğimiz sayı içeriyorsa True, içermiyorsa False dönecektir.

private void btnRastgeleEssiz_Click(object sender, EventArgs e)
        {
           lbRastgele.Items.Clear();
            int[] dizi = new int[10];
            Random rastgele = new Random();
            int sayi, index=0;
 
            for (;;)
            {
                sayi= rastgele.Next(1, 100);
                if (!dizi.Contains(sayi))
                {
                    if (index < dizi.Length)
                    {
                        dizi[index] = sayi;
                        index++;
                    }
                }
                else continue;
                if (index == dizi.Length) break;
            } //döngü bitti

            //Şimdi dizimizdeki eşsiz sayıları listbox içine yazdırıyoruz
            for (int i = 0; i < dizi.Length; i++)
                lbRastgele.Items.Add(dizi[i].ToString());
 
            MessageBox.Show("İşlem başarıyla tamamlandı", "İşlem Tamam", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }





Bundan rastgele sayılar üzerine farklı örneklerle devam edeceğiz. 

Mutlu kodlamalar,
Oğuzhan TAŞ
Aralık, 2023
 
Bookmark and Share