C++'da Rastgele Sayı Üreteci (rand & srand)

Bu Eğitim, C++'da Rastgele Sayılar Üretmek için rand() ve srand() Fonksiyonlarının Kullanımını Ayrıntılı Olarak Açıklamaktadır:

Çoğu zaman simülasyonlar veya oyunlar ve rastgele olaylar gerektiren diğer uygulamalar üretmek için uygulamamızda rastgele sayılar kullanmamız gerekir.

Örneğin, Bir zar oyununda, rastgele olaylar olmadan, zarı her attığımızda aynı tarafın gelmesini sağlarız ve böylece istenmeyen sonuçlar veririz.

Bu nedenle elimizde bir rastgele sayı üreteci olması gerekli hale gelir. Fiziksel ortamda rastgele olaylar üretebiliriz ancak bilgisayarlar söz konusu olduğunda bu mümkün değildir.

Bunun nedeni, bilgisayarlardaki her şeyin ikili olması, yani 0 veya 1 (doğru veya yanlış) ve arada hiçbir şey olmamasıdır. Bu nedenle bilgisayarlar genellikle öngörülebilir olaylar üretir ve rastgele olaylar üretemezler.

Bunun yerine, bilgisayarlar rastlantısallığı simüle eder. sözde rasgele sayı üreteci (PRNG) . C++ rastgele sayı üretecine sahiptir ve birçok uygulama ile kullanılabilir.

Bu eğitimde, C++'da rastgele sayı üretme fonksiyonlarını/yaklaşımlarını ayrıntılı olarak tartışacağız.

C++'da Sözde Rastgele Sayı Üreteci (PRNG)

Genel olarak, bir sözde rastgele sayı üreteci (PRNG), bir tohum veya başlangıç sayısı alan ve matematiksel işlemler kullanarak tohumdan farklı başka bir sayıya dönüştüren bir program olarak tanımlanabilir.

Bu işlem her seferinde son üretilen sayı alınarak tekrar tekrar gerçekleştirilir. Her seferinde üretilen sayının önceki sayılarla ilgisi yoktur. Böylece bu program rastgele görünen bir dizi sayı üretebilir.

C++ dili dahili bir sözde rastgele sayı üreteci ile birlikte gelir ve rastgele sayılar üretmek için kullanılabilecek iki rand () ve srand () işlevi sağlar.

Bu iki işlevi ayrıntılı olarak ele alalım.

C++'da rand ve srand Fonksiyonları

srand ()

Fonksiyon prototipi: void srand (unsigned int seed);

Parametreler: seed - Sözde rasgele sayı üreteci algoritması tarafından tohum olarak kullanılacak bir tamsayı değeri.

Dönüş değeri: Hiçbiri

Açıklama: srand fonksiyonu, sözde rastgele sayı dizisini 'rastgele tohum' adı verilen bir parametre ile başlatmak için kullanılır. rand fonksiyonunun çıktısının rastgele görünmesini sağlar. Aksi takdirde, rand () fonksiyonunun çıktısı onu her çağırdığımızda aynı olacaktır.

Böylece, rastgele sayı üretecini srand () fonksiyonu ile tohumlarsak, üreteci srand'a aktarılan argüman değerine bağlı olan noktadan başlatacaktır. Eğer rastgele sayı üretecini sistem zamanı ile ayarlarsak Örneğin, rand () fonksiyonuna ilk çağrıdan önce, programı her çalıştırdığımızda rastgele sayılar üretecektir.

Genellikle srand () fonksiyonunu her rastgele sayı ürettiğimizde değil, rand () fonksiyonunu çağırmadan önce sadece bir kez çağırmamız gerektiğini unutmayın.

rand ()

İşlev prototipi: int rand (void);

Parametreler: Hiçbiri

Dönüş değeri: 0 ile RAND_MAX arasında bir tamsayı değeri.

Açıklama: rand () işlevi, dizideki bir sonraki rasgele sayıyı üretir. Üretilen sayı, 0 ile RAND_MAX arasındaki sözde rasgele tamsayıdır. RAND_MAX, başlıkta genellikle 32767 değerine ayarlanmış bir sabittir.

 #include #include #include int main() { std::srand(static_cast(std::time(nullptr)); for (int count=1; count <= 100; ++count) { std::cout <<std::rand() <<"\t"; // satır başına 5 rastgele sayı göster if (count % 5 == 0) std::cout <<"\n"; } return 0; } 

Çıktı:

Yukarıdaki programda, srand fonksiyonu için tohum olarak sistem saatini vererek ilk 100 rastgele sayıyı ürettik. Bu programda hem srand hem de rand fonksiyonlarını kullandık. Tohum olarak sistem saatini kullandığımız için, programı çalıştırdığımızda üretilen çıktının her seferinde farklı olacağını unutmayın.

rand () ve srand () Arasındaki Fark

rand() srand()
Rastgele sayılar üretmek için kullanılır. rand () işlevi tarafından kullanılan PRNG'yi tohumlar.
Rastgele sayıları oluşturmak için istediğimiz kadar çağrılır. Rastgele sayı üretecini görmek için sadece bir kez arandı.
Tartışma kabul etmez. Rastgele sayı üretecini tohumlamak için kullanılan parametreyi alır.
Her çağrıldığında rastgele sayı dizisini döndürür. Bir değer döndürmez.

C++ Rastgele Float

Yukarıda gördüğümüz rand () fonksiyonu varsayılan olarak bir tamsayı değeri döndürür ve bu da bazı durumlarda taşmaya neden olabilir. Bu nedenle, float veya double değer kullanabiliriz. rand () fonksiyonunun dönüş değerini 'float'a dönüştürerek float rastgele sayılar oluşturabiliriz.

Böylece aşağıdakiler float 0.0 ile 1.0 (her ikisi de dahil) arasında rastgele bir sayı üretecektir.

 cout< 

Benzer şekilde, aşağıdaki satır 1,2 ile 3,4 arasında rastgele bir sayı üretecektir

 cout<<1.2 + static_cast (rand()) / ( static_cast (RAND_MAX/(3.4-1.2)); 

Aşağıdaki örneğimizde çıktıyı oluşturmak için rastgele float kullanıyoruz.

C++ 0 ile 1 Arasında Rastgele Sayı

0-1 arasında rastgele sayılar üretmek için srand () ve rand () fonksiyonlarını kullanabiliriz. rand () fonksiyonunun çıktısını float ya da double olarak ondalık değere çevirmemiz gerektiğini unutmayın.

rand () fonksiyonunun varsayılan dönüş değeri olan tamsayı, kesir olan 0 ile 1 arasındaki rastgele sayıları görüntülemek için yetersizdir.

Aşağıda verilen C++ programı 0 ile 1 arasındaki ilk beş rastgele sayıyı görüntüler.

 #include #include using namespace std; int main() { cout<<"0 ile 1 arasında üretilen rastgele sayılar:"< ="" ="" cout="" endl;="" for="" i="" i++)="" null="" pre="" rand()="" rand_max="" return="" srand(="" {="" }="" }="">

Çıktı :

Programın çıktısının kesirler olan 0 ile 1 arasında rastgele bir sayı olduğunu görüyoruz.

Eğer rand () fonksiyonunun dönüş değerini float veya double'a çevirmezsek, rastgele sayı olarak 0 elde ederiz.

C++ 1 ile 10 Arasında Rastgele Sayı

Bir sonraki örnek 1 ile 10 arasında rastgele sayılar üretmektir. Aşağıda rastgele sayılar üreten C++ programı yer almaktadır.

Sistem saati ile srand fonksiyonunu çağırıyoruz ve ardından modül 10 operatörleri ile rand fonksiyonunu çağırıyoruz.

 #include #include #include using namespace std; int main() { srand(time(0)); // Rastgele sayı üretecini başlat. cout<<"1 ile 10 arasında üretilen rastgele sayılar:"< ="" cout="" for(int="" i="0;i10;i++)" pre="" return="" }="">

Çıktı:

Yukarıdaki programda, 1 ile 10 arasında ilk 10 rastgele sayıyı üretiyoruz. Program her çalıştırıldığında, çağrılan srand işlevi nedeniyle farklı sayı kümeleri üreteceğini unutmayın.

Sıkça Sorulan Sorular

S #1) C++'da Random fonksiyonu için başlık dosyası nedir?

Cevap ver: Rastgele sayılar üretmek için kullanılan rand ve srand fonksiyonları <içinde tanımlanmıştır; cstdlib > C++ başlığı.

S #2) C++'da Rand_max nedir?

Yanıt: RAND_MAX başlıkta genellikle 32767 değerine ayarlanmış bir sabittir. Sözde rastgele sayı üreteci (PRNG) 0 ile RAND_MAX arasında rastgele sayılar üretir.

S #3) Rastgele fonksiyon nasıl çalışır?

Cevap ver: C++ iki rastgele fonksiyonu destekler, yani srand () ve rand ( ). srand () işlevi, sağlanan ilk tohuma bağlı olarak rastgele sayı dizisi üreten rand () işlevi tarafından kullanılan rastgele sayı üretecini tohumlar.

S #4) Zamanla nasıl başa çıkıyorsunuz?

Cevap ver: srand fonksiyonu, rand () fonksiyonu tarafından kullanılan sözde rasgele sayı üretecini (PRNG) tohumlar. time (0) çağrısının sonucunu tohum olarak kullanmak standart bir uygulamadır. Bu time fonksiyonu, 00:00 saat, 1 Ocak 1970, UTC (geçerli UNIX zaman damgası) tarihinden itibaren saniye sayısı değerini döndürür.

Böylece tohumun değeri her saniye değişir. Bu nedenle srand zaman fonksiyonu ile her çağrıldığında yeni bir rastgele sayı kümesi oluşturulur.

Sonuç

Bu eğitimde Rastgele Sayı Üretimi konusunu ayrıntılı olarak ele aldık. Programlama dilleri veya genel olarak bilgisayarlar, tahmini çıktılar vermek üzere tasarlandıkları için rastgele sayılar üretmezler. Bu nedenle, rastgeleliği simüle etmemiz gerekir.

Rastgeleliği simüle etmek için, C++'da yerleşik olarak bulunan sözde rastgele sayı üretecini (PRNG) kullanıyoruz. Böylece rand () ve srand () fonksiyonlarını kullanarak C++'da rastgele sayılar üretebiliyoruz.

srand () işlevi rastgele sayılar üretmek için tohum sağlamak için kullanılırken rand () işlevi dizideki bir sonraki rastgele sayıyı üretir.

Başa dön