İlginizi Çekebilir
C# Random Sayı Üretme
  1. Ana Sayfa
  2. C#
  3. C# Random Sayı Üretme

C# Random Sayı Üretme

C# random sayı üretme işlemini geçmiş konularım içerisinde sıklıkla kullandığımı fark ettim. Bunun için C# random sayı üretme, karakter üretme gibi işlemlerin nasıl gerçekleştirildiğini anlatacak bir kaynak hazırlamak istedim. İsterseniz gelin birlikte C# Random sayı üretme işlemi tam olarak ne ona bakalım.

C# Random Sayı Üretme İşlemi Nasıl Yapılır?

Küçük bir sınıf tanımlaması ve o sınıftaki bir metot ile birbirinden farklı sayı üretmemizi sağlayan Random sınıfını ele alacak olursak, çalışma prensibini tamamen sistem üzerindeki tarih bilgilerini kullanarak ortaya rastgele bir değer üretimi yaptığını görürüz.👀

Bu durum bazı zamanlar aynı değeri üretme, tahmin edilebilirlik olayını arttırsa da çeşitli işlemler ve formüller ile ortaya çıkan değeri çok ayrı bir noktaya getirme imkanımız var.

Peki, C# Random sayı üretme işlemi için nasıl bir tanımlama yapmamız gerekiyor isterseniz gelin ona bir göz atalım.

C# Random Sayı Üretme İşlemi İçin Gerekli Tanımlamalar

C# rastgele sayı üretme işlemi için sistem üzerinde tanımlı olan Random sınıfını programımıza dahil ederek nesneye çevirme işlemini yapmamız gerekmektedir. Bu işlemi gerçekleştirmek için aşağıdaki basit tek satırlık kodu yazmamız yeterli olacaktır.

Random random = new Random ();

C# Rastgele sayı üretmek için nesneye aktardığımız sınıfımızın bir çok kullanım şekli mevcut. Bu kullanım şekillerinden bazıları şu şekilde:

  • random.Next(), bu şekilde parametresiz yapacağımız tanımla üzerinde sistem integer veri tipine ait rastgele değer üretecektir.
  • random.Next(parametre), şeklinde tek parametre alan bir tanımlama yaptığımız zaman üretilecek değerin maksimum olabileceği değer parametre üzerinde verdiğimiz değerin bir eksiği olacaktır.
  • random.Next(minimum, maksimum), tarzında iki parametre alan bir tanımla yaparsak eğer vereceğimiz değerlerin aralığında random değerler üretir.
  • random.NextDouble(), 0 ile 1 arasında double veri tipinde rastgele değerler üretir.

Bu maddeler üzerinde vermiş olduğum tanımlamaların kod içerisinde yazılışlarına ve çalıştırdıktan sonra üretilen değerleri görürsek aklımızda daha kalıcı olabilir. Bunun için tüm üretilen rastgele değerleri görmemizi sağlayacak aşağıdaki kod dizisini oluşturdum.

Random random = new Random();
// Değişken Tanımlaması:
int i = 0;
string ayrac = new string('-', 25);
// Ekrana Yazdırma İşlemi:
Console.Write("{0}\n< C# Random Sayı Üretme >\n{1}\n-> Üretilen Random Değerler\n{2}\n", ayrac, ayrac,ayrac);
while (i <= 2)
{
Console.Write("-> random.Next(): {0}\n-> random.Next(parametre): {1}\n-> random.Next(min,max): {2}\n-> random.NextDouble(): {3}",random.Next(),random.Next(15),random.Next(5,50),random.NextDouble());
Console.WriteLine("\n"+ayrac);
i++;
}

Kod Çıktısı:

C# Random Değer Oluşturma
C# Random Sayı Üretme

C# Random sayı üretme işlemi bu kadar kolay bir işlem. Bu işlemi örnek bir proje içerisinde kullanmadan önce bu elde edilen değerler ile nasıl c# random string üretme işlemi yapabiliriz buna bakalım isterseniz.

C# Random String Üretme İşlemi Nasıl Yapılır?

Genelde kullanıcıdan bir veri talebinde bulunduğumuz zaman ya da bazı elde ettiğimiz verilerin yapılarını değiştirmek için kullandığımız tip dönüştürücüleri, bu işlemi gerçekleştirmek içinde yardım alacağımız ve ihtiyaç duyduğumuz tek şey tip dönüştürücüleridir. C# random string üretme işlemi için elde edilen int veri tipine ait değerleri kullanarak öncelikle ascii tablosuna göre bir char daha sonra bu char değerlerin birleşmesi ile bir string metin elde edebiliriz.

Ascii tablosuna göre elde edebileceğimiz bazı değerler:

  • Random üretilen değerimize bir aralık belirlersek ve bu aralıkta 65 ile 90 arasında bir değer gelirse alfabemizdeki büyük harf değerlerini elde ederiz.
  • Alfabemizdeki harflerin küçük hallerine ulaşmak istediğimiz zaman ise 97 ile 122 arasındaki integer değerlerine ihtiyaç duyarız.
  • Son olarak belki de işimize en çok yarayacak klavyede mevcut, elde edebileceğimiz değerler için 32 ile 127 arasında bir değer elde etmemiz gerekmektedir.

Hangi karakterlere ulaşabileceğinizi daha detaylı görmek isterseniz buradaki wikipedia sayfasına giderek ascii tablosuna göz atabilirsiniz.

Peki, bu değerleri nasıl elde ederiz derseniz hemen basit bir kod dizisi üzerinde bu işlemi gösteriyim.

Random random = new Random();

// Değişken Tanımlaması:
int i = 0, k = 0, z = 0;
string ayrac = new string('-', 25);
            
Console.Write("{0}\n< C# Random String Üretme >\n{1}\n-> Üretilen Random String Değerler\n{2}\n", ayrac, ayrac, ayrac);
Console.Write("-> Elde Edilen Büyük Harfler: ");
while (i <= 5){
Console.Write("{0} ", Convert.ToChar(random.Next(65, 90) + 1));
i++;
}
Console.Write("\n-> Elde Edilen Küyük Harfler: ");
while (k <= 5){
Console.Write("{0} ", Convert.ToChar(random.Next(97, 122) + 1));
k++;
}
Console.Write("\n-> Klavyeden Elde Edilebilecek Değerler: ");
while (z <= 5){
Console.Write("{0} ", Convert.ToChar(random.Next(32, 127) + 1));
z++;
}
Console.WriteLine("\n{0}", ayrac);

Kod Çıktısı:

C# rastgele string üretme işlemi nasıl yapılır
C# Random String Üretme

Akılda kalıcılığı arttırmak için programlarımızda kullanabileceğimiz basit bir uygulama yapalım. Böylelikle rastgele ürettiğimiz değerlerin kullanım şekillerini daha iyi kavrayabiliriz. Bunun için 16 hanelik toplam 4 bölümden oluşacak bir random lisans anahtarı oluşturacak program yazalım.

Bu uygulamayı oluştururken uyguladığım aşamalar şu şekildedir:

#1 Elde ettiğimiz değerlerin aynı kelimelerden oluşmasını istemediğimizden dolayı ve verilerin bir dizi içerisinde saklanmasını istediğim için ArrayList tanımlaması gerçekleştirdim. Diziler kavramı hakkında paylaşmış olduğum yazıya göz atamadıysanız C# Diziler Nedir? isimli konuma göz atabilirsiniz.
#2 Random değerlerin üretileceği basit bir algoritma oluşturdum.
#3 Oluşturmuş olduğum algoritma sonucunda elde ettiğimiz değerleri dizi içerisinde bulunup bulunmadığını kontrol ettikten sonra dizi içerisine eklemesini sağlıyorum.
#4 İşlemim bittikten sonra ortaya çıkan anahtarı ekrana yazdırıyorum.

using System;
using System.Collections;

namespace RandomDegerler
{
    class Program
    {
        static void Main(string[] args)
        {
            Random random = new Random();
            // Değişken Tanımlaması:
            int veri;
            string ayrac = new string('-', 25);
            ArrayList list = new ArrayList();
            
            // Oluşturmuş Olduğumuz ArrayList Atamlarını Yapıyoruz:
            for (int v = 0; v < 16; v++)
            {
                if(v==0 || v==4 || v==8 || v == 12)
                {
                    veri = random.Next(65,90)+1;
                    if (list.Contains(veri) == true || list.Contains(Convert.ToChar(veri))==true)
                    {
                        veri = random.Next(75, 85);
                        list.Add(Convert.ToChar(veri));
                    }
                    else
                        list.Add(Convert.ToChar(veri));
                }
                else
                {
                    veri = random.Next(15);
                    if (veri > 9)
                    {
                        veri = random.Next(65, 90) + 1;
                        if (list.Contains(veri) == true || list.Contains(Convert.ToChar(veri)) == true)
                        {
                            veri = random.Next(71, 87);
                            list.Add(Convert.ToChar(veri));
                        }
                        else
                            list.Add(Convert.ToChar(veri));
                    }
                    else
                    {
                        if (list.Contains(veri) == true || list.Contains(Convert.ToChar(veri)) == true)
                        {
                            veri = random.Next(3,10)-1;
                            list.Add(veri);
                        }
                        else
                            list.Add(veri);
                    }
                }
            }
            Console.Write("{0}\n< Random Lisans Anahtarı >\n{1}\n-> Oluşturulan Anahtar: ", ayrac, ayrac);
            // Oluşturmuş Olduğumuz Lisans Anahtarını Ekrana Yazdırıyoruz:
            int r = 0;
            foreach (var n in list)
            {
                Console.Write(n);
                if (r == 3 || r == 7 || r == 11)
                {
                    Console.Write(" - ");
                }
                r++;
            }
            Console.WriteLine("\n"+ayrac);
        }
    }
}

Kod Çıktısı:

C# rastgele lisans anahtarı nasıl oluşturulur
C# Random lisans anahtarı oluşturma

Bir farklı bakış açısı kazanmamız için random sınıfını kullanarak basit bir oyun prototip temelini nasıl oluştururuz, nasıl random şans oranı belirlenerek işlem gerçekleştirilir gibi sorulara cevap vermek için bir basit kasa açma uygulaması konseptinde kod satırlarımızı oluşturalım. Bunun için uyguladığım aşamalar şu şekildedir:

#1 Öncelikle kullanıcının giriş yapabilmesi için kullanıcı adı, şifresi ve kasa açması için gerekli olan hesap bakiyesi gibi gerekli olan çeşitli değişkenlerin tanımlamasını gerçekleştirdim.
#2 Sisteme tanımlı bilgiler doğrultusunda kullanıcıdan aldığımız bilgiler doğruysa ve hesap bakiyesi yeterliyse sisteme giriş yaparak kasa açmasını sağlayacak bir while döngüsü oluşturarak hangi kasayı açmasını istediğini soruyoruz.
#3 Açılan her kasa sonucunda hesap bakiyesi, şans oranı gibi bilgiler güncellenerek işleme devam ettiriliyor.

namespace RandomDegerler
{
    class Program
    {
        static void Main(string[] args)
        {
            Random random = new Random();
            // Değişken Tanımlaması:
            string ayrac = new string('-', 25);
            bool döngü = true;
            string kAdi, kSifre;
            double hesapBakiyesi = 1000;
            int sansOrani, silahKasasi = 60, bicakKasasi=20,islemSec;
            Console.Write("{0}\n< Kasa Açma Uygulaması >\n{1}\n-> Kullanıcı Adı: ",ayrac,ayrac);
            kAdi = Console.ReadLine();
            Console.Write("-> Hesap Şifreniz: ");
            kSifre = Console.ReadLine();
            if(kAdi.Equals("admin") && kSifre.Equals("root"))
            {
                Console.Clear();
                if (hesapBakiyesi > 0)
                {
                    while (döngü==true) {
                        if (hesapBakiyesi > 0)
                        {
                            Console.Write("{0}\n[1] - Silah Kasası Aç (50 TL)\n[2] - Bıçak Kasası Aç (250 TL)\n[3] - Çıkış Yap\n{1}\n-> Yapmak İstediğiniz İşlem: ",ayrac,ayrac);
                            islemSec = Convert.ToInt32(Console.ReadLine());
                            Console.WriteLine(ayrac);
                            switch (islemSec)
                            {
                                case 1:
                                    sansOrani = random.Next(101);
                                    
                                    if (silahKasasi > sansOrani)
                                    {
                                        hesapBakiyesi -= 50;
                                        Console.WriteLine("-> Üzgünüm 100TL Kaybettiniz.\n-> Yeni Hesap Bakiyeniz: {0}",hesapBakiyesi);
                                    }
                                    else if (silahKasasi < sansOrani || silahKasasi == sansOrani)
                                    {
                                        silahKasasi += random.Next(4); //Kazandıkça zorluk seviyesini arttıralım.
                                        hesapBakiyesi += 100;
                                        Console.WriteLine("-> Tebrikler 100 TL Kazandınız.\n-> Yeni Hesap Bakiyeniz: {0}",hesapBakiyesi);
                                    }
                                    break;
                                case 2:
                                    sansOrani = random.Next(101);

                                    if (silahKasasi > sansOrani)
                                    {
                                        hesapBakiyesi -= 250;
                                        Console.WriteLine("-> Üzgünüm 500 TL Kaybettiniz.\n-> Yeni Hesap Bakiyeniz: {0}", hesapBakiyesi);
                                    }
                                    else if (silahKasasi < sansOrani || silahKasasi == sansOrani)
                                    {
                                        silahKasasi += random.Next(12); //Kazandıkça zorluk seviyesini arttıralım.
                                        hesapBakiyesi += 500;
                                        Console.WriteLine("-> Tebrikler 500 TL Kazandınız.\n-> Yeni Hesap Bakiyeniz: {0}", hesapBakiyesi);
                                    }
                                    break;
                                case 3:
                                    döngü = false;
                                    break;
                            }
                        }
                        else
                        {
                            döngü = false;
                            Console.WriteLine("-> Üzgünüm Yeterli Paranız Kalmadı.\n{0}",ayrac);
                        }
                    }  
                }
                else
                {
                    Console.WriteLine("-> Bakiyeniz Bulunmuyor.");
                }
            }
            else
            {
                Console.WriteLine("{0}\n-> Kullanıcı Bilgilerini Yanlış Girdiniz.\n{1}", ayrac, ayrac);
            }
        }
    }
}

Kod Çıktısı:

C# random sayı üretme nasıl yapılır
C# Random sayı üretme

C# random sayı üretme konu başlığı altında incelediğimiz random sınıfı hakkında aklınıza takılan herhangi bir soru ya da konu işleyişi hakkında bir öneriniz bulunuyorsa aşağıda bulunan yorum yap kısmından benimle iletişime geçebilirsiniz.

Yorum Yap

Yazar Hakkında

Yazmayı, öğrenmeyi, öğrendiklerini paylaşmayı , kodlamayı ve günün birinde Yönetim Bilişim Sistemleri Uzmanı olmanın hayalini kuran birisiyim.

Yorum Yap