C ++ srand () - C ++ Standart Kitaplığı

C ++ içindeki srand () işlevi, rand () işlevi tarafından kullanılan sözde rasgele sayı üretecini tohumlar.

C ++ içindeki srand () işlevi, rand () işlevi tarafından kullanılan sözde rasgele sayı üretecini tohumlar. Rand () işlevi için çekirdek varsayılan olarak 1'dir.

Rand () 'dan önce hiçbir srand () çağrılmazsa, rand () işlevi srand (1) ile başlatılmış gibi davranır.

srand () prototipi

 void srand (işaretsiz int tohum);

Srand () işlevi, rand () işlevi tarafından çekirdek olarak kullanılan işaretsiz bir tamsayıyı parametresi olarak alır.

Başlık dosyasında tanımlanmıştır.

srand () Parametreler

  • seed: unsigned int türünde bir çekirdek değer

srand () Dönüş değeri

  • Yok

Srand () işlevi herhangi bir değer döndürmez.

Örnek 1: srand () işlevi nasıl çalışır?

 #include #include using namespace std; int main() ( int random = rand(); /* No srand() calls before rand(), so seed = 1*/ cout << "Seed = 1, Random number = " << random << endl; srand(5); /* Seed = 5 */ random = rand(); cout << "Seed = 5, Random number = " << random << endl; return 0; )

Programı çalıştırdığınızda, çıktı:

 Çekirdek = 1, Rastgele sayı = 41 Tohum = 5, Rastgele sayı = 54

Sözde rasgele sayı üretecini programın başında yalnızca bir kez ve rand () çağrılarından önce tohumlamak iyi bir uygulamadır. Yeni bir sayı kümesi oluşturmamız gerektiğinde her seferinde tohumlanmamalıdır.

Standart uygulama tohum olarak bir zaman çağrısının (0) sonucunu kullanmaktır. Time () işlevi 1 Ocak 1970 UTC (yani geçerli unix zaman damgası) 00:00 saatten bu yana geçen saniye sayısını döndürür. Tohumun değeri zamanla değişir. Böylece programı her çalıştırdığımızda, yeni bir rastgele sayı kümesi üretilir.

Örnek 2: time () ile srand () işlevi

 #include #include #include using namespace std; int main() ( srand(time(0)); int random = rand(); cout << "Seed = " << time(0) << endl; cout << "Random number = " << random << endl; return 0; )

Programı çalıştırdığınızda, çıktı:

 Çekirdek = 1485583981 Rastgele sayı = 22589

Ilginç makaleler...