random number generator c
Bu Öğretici, C ++ 'da Rastgele Sayılar Oluşturmak İçin Rand () ve srand () İşlevlerinin Kullanımını Ayrıntılı Olarak Açıklar:
Çoğu zaman simülasyonlar veya oyunlar ve rastgele olaylar gerektiren diğer uygulamaları üretmek için uygulamamızda rastgele sayılar kullanılmasını zorunlu kılıyoruz.
Örneğin, bir zar oyununda, rastgele olaylar olmadan, her zar attığımızda aynı tarafın ortaya çıkmasına ve böylece istenmeyen sonuçlar vermesine neden oluruz.
Bu nedenle, elimizde rastgele bir sayı üretecimiz olması gerekli hale gelir. Fiziksel ortamda rastgele olaylar oluşturabiliriz ancak bilgisayar söz konusu olduğunda bu mümkün değildir.
=> Kolay C ++ Eğitim Serisini Okuyun.
Bunun nedeni, bilgisayarlardaki her şeyin ikili olmasıdır, yani 0 veya 1 (doğru veya yanlış) ve arada hiçbir şey yoktur. Bu nedenle bilgisayarlar genellikle tahmin edilebilir olaylar üretir ve rastgele olaylar oluşturamaz.
Bunun yerine, bilgisayarlar kullanılarak yapılan rastgeleliği simüle eder. sözde rasgele sayı üreteci (PRNG) . C ++ rasgele bir sayı üretecine sahiptir ve birçok uygulamada kullanılabilir.
Bu eğitimde, C ++ 'da rasgele sayılar üretmeye yönelik işlevleri / yaklaşımları ayrıntılı olarak tartışacağız.
Ne öğreneceksin:
- C ++ 'da Sözde Rastgele Sayı Üreticisi (PRNG)
- rand ve srand İşlevleri C ++ 'da
- Rand () ve srand () Arasındaki Fark
- C ++ Rastgele Kayan
- 0 ile 1 Arasında C ++ Rastgele Sayı
- 1 ile 10 Arasında C ++ Rasgele Sayı
- Sıkça Sorulan Sorular
- Sonuç
- Önerilen Kaynaklar
C ++ 'da Sözde Rastgele Sayı Üreticisi (PRNG)
Genel olarak, bir sözde rasgele sayı üreteci (PRNG), bir çekirdek veya bir başlangıç numarasını alan ve bunu 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 üretilen son numara alınarak tekrar tekrar gerçekleştirilir. Üretilen sayı her seferinde önceki sayılarla ilgisizdir. Bu nedenle, bu program rastgele görünen bir dizi sayı üretebilir.
C ++ dili yerleşik bir sözde rasgele sayı üreteci ile birlikte gelir ve rasgele sayılar oluşturmak için kullanılabilen iki işlev rand () ve srand () sağlar.
Bu iki işlevi ayrıntılı olarak tartışalım.
bugün java ne için kullanılıyor
rand ve srand İşlevleri C ++ 'da
srand ()
İşlev prototipi: void srand (işaretsiz int tohum);
Parametreler: seed - Sözde rastgele sayı üreteci algoritması tarafından çekirdek olarak kullanılacak bir tamsayı değeri.
Geri dönüş değeri: Yok
Açıklama: srand işlevi, sözde rasgele sayılar dizisini 'rasgele çekirdek' adı verilen bir parametre ile başlatmak için kullanılır. Rand işlevinin çıktısının rastgele görünmesini sağlar. Aksi takdirde, rand () işlevinin çıktısı, onu her çağırdığımızda aynı olacaktır.
Bu nedenle, rasgele sayı üretecini srand () işlevi ile tohumladığımızda, üreteci srand'a iletilen argüman değerine bağlı olan noktadan başlatacaktır. Rasgele sayı üretecini sistem saatiyle ayarlarsak Örneğin, rand () işlevine yapılan ilk çağrıdan önce, programı her çalıştırdığımızda rastgele sayılar üretecektir.
Genelde srand () işlevini rand () işlevine yapılan çağrıdan önce yalnızca bir kez çağırmamız gerektiğini ve her rasgele sayı ürettiğimizde değil.
rand ()
İşlev prototipi: int rand (geçersiz);
Parametreler: Yok
Geri dönüş değeri: 0 ile RAND_MAX arasında bir tam sayı değeri.
Açıklama: Rand () işlevi, sıradaki bir sonraki rastgele sayıyı üretir. Oluşturulan sayı, 0 ile RAND_MAX arasındaki sözde rastgele 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() << ' '; // display 5 random numbers per row if (count % 5 == 0) std::cout << '
'; } return 0; }
Çıktı:
Yukarıdaki programda srand fonksiyonu için çekirdek olarak sistem saatini vererek ilk 100 rasgele sayıyı oluşturduk. Bu programda hem srand hem de rand fonksiyonlarını kullandık. Tohum olarak sistem saatinden dolayı, programı her çalıştırdığımızda üretilen çıktının farklı olacağını unutmayın.
Rand () ve srand () Arasındaki Fark
kürek çekmek() | srand () |
---|---|
Rastgele sayılar oluşturmak için kullanılır. | Rand () işlevi tarafından kullanılan PRNG'yi tohumlar. |
Rastgele sayılar oluşturmak istediğimiz kadar çok çağrılır. | Rastgele sayı oluşturucuyu görmek için yalnızca bir kez aranır. |
Herhangi bir argüman almaz. | Rastgele sayı üretecini tohumlamak için kullanılan parametreyi alır. |
Her çağrıldığında rastgele sayıların sırasını döndürür. | Bir değer döndürmez. |
C ++ Rastgele Kayan
Yukarıda gördüğümüz rand () işlevi, varsayılan olarak belirli durumlarda taşmaya neden olabilecek bir tamsayı değeri döndürür. Böylece float veya double value kullanabiliriz. Rand () işlevinin dönüş değerini 'float' a çevirerek rastgele kayan sayılar üretebiliriz.
Böylece aşağıdakiler float 0.0 ile 1.0 (her ikisi dahil) arasında rastgele bir sayı oluşturacaktır.
cout< Benzer şekilde, aşağıdaki satır 1,2 ile 3,4 arasında rastgele bir sayı oluşturacaktır.
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 kayan nokta kullanıyoruz.
0 ile 1 Arasında C ++ Rastgele Sayı
0 ile 1 arasında rastgele sayılar oluşturmak için srand () ve rand () işlevini kullanabiliriz. Rand () işlevinin çıktısını float veya double ondalık değere çevirmemiz gerektiğine dikkat edin.
Rand () fonksiyonunun varsayılan dönüş değeri, yani 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ş rasgele sayıyı gösterir.
java ters sırayla bir dizi nasıl yazdırılır
#include #include using namespace std; int main() { cout<<'Random numbers generated between 0 and 1:'< Çıktı :
Programın çıktısının 0 ile 1 arasında kesirler olan rastgele sayı olduğunu görüyoruz.
Rand () işlevinin dönüş değerini float veya double olarak çevirmezsek, rastgele sayı olarak 0 elde ederiz.
1 ile 10 Arasında C ++ Rasgele Sayı
Bir sonraki örnek, 1 ile 10 arasında rastgele sayılar üretmektir. Aşağıda, rasgele sayılar üreten C ++ programı verilmiştir.
Srand işlevini sistem saati ile çağırıyoruz ve ardından modül 10 operatörleri ile rand işlevini çağırıyoruz.
#include #include #include using namespace std; int main() { srand(time(0)); // Initialize random number generator. cout<<'Random numbers generated between 1 and 10:'< Çıktı:
Yukarıdaki programda, 1 ile 10 arasında ilk 10 rasgele sayıyı üretiyoruz. Program her çalıştırıldığında, çağrılan srand fonksiyonu nedeniyle farklı sayı kümeleri oluşturacağını unutmayın.
Sıkça Sorulan Sorular
S # 1) C ++ 'da Random işlevi için başlık dosyası nedir?
Cevap: Rastgele sayılar, rand ve srand üretme işlevleri,< cstdlib > C ++ başlığı.
S # 2) C ++ 'da Rand_max nedir?
Cevap: RAND_MAX genellikle 32767 değerine ayarlanan başlıktaki bir sabittir. Sözde rasgele sayı üreteci (PRNG), O ila RAND_MAX arasında rasgele sayılar üretir.
S # 3) Rastgele işlevi nasıl çalışır?
Cevap: C ++ iki rastgele işlevi destekler, yani srand () ve rand (). Srand () işlevi, sağlanan ilk tohuma bağlı olarak rasgele sayı dizisini üreten rand () işlevi tarafından kullanılan rasgele sayı üretecini tohumlar.
S # 4) Zamanı nasıl değerlendiriyorsunuz?
Cevap: Srand işlevi rand () işlevi tarafından kullanılan sözde rasgele sayı üretecini (PRNG) tohumlar. Bir zaman çağrısının (0) sonucunu tohum olarak kullanmak standart bir uygulamadır. Bu zaman işlevi, 1 Ocak 1970 UTC (geçerli UNIX zaman damgası) 00:00 saatten bu yana geçen saniye sayısını döndürür.
Böylece tohumun değeri her saniye değişir. Bu nedenle, srand zaman işleviyle her çağrıldığında, yeni bir rastgele sayılar kümesi oluşturulur.
Sonuç
Bu eğitimde Random Number Generation'ı detaylı olarak tartıştık. Programlama dilleri veya genel olarak bilgisayarlar, tahmini çıktı vermek üzere tasarlandıklarından rastgele sayılar üretmezler. Bu nedenle, rastgeleliği simüle etmemiz gerekir.
Rastgeleliği simüle etmek için, C ++ 'da yerleşik olan sözde rastgele sayı üretecinden (PRNG) yararlanıyoruz. Böylece rand () ve srand () gibi iki işlevi kullanarak C ++ 'da rasgele sayılar üretebiliriz.
Srand () işlevi rasgele sayılar üretmek için tohum sağlamak için kullanılırken rand () işlevi dizideki sonraki rasgele sayıyı üretir.
=> Tüm C ++ Eğitim Serisini Burada Arayın.
Önerilen Kaynaklar
- Kod Örnekleriyle C # Rastgele Sayı ve C # Rastgele Dize Oluşturucu
- Uygulamalı Örneklerle Python Ana İşlev Eğitimi
- Unix Borular Eğitimi: Unix Programlamada Borular
- C ++ 'da Özyineleme
- C ++ 'da Arkadaş İşlevleri
- C ++ 'da Polimorfizm
- C ++ 'da Nesne Tabanlı Programlama
- OOP Java: Java'da Nesne Tabanlı Programlamaya Giriş