Generowanie liczb pseudo losowych za pomocą funkcji srand oraz rand

Stronę tą wyświetlono już: 301 razy

Funkcje srand oraz rand wymagają załączenia pliku nagłówkowego stdlib.h, dodatkowo w programie użyta została funkcja time, dla której konieczne jest załączenie pliku nagłówkowego time.h. Oto kod programu generującego 5 liczb pseudolosowych:

Listing 1
  1. #include <iostream>
  2. #include <stdlib.h> // niezbędne dla funkcji srand i rand
  3. #include <time.h> // niezbędne dla funkcji time
  4. #include <windows.h> //niezbędne dla funkcji setlocale
  5. using namespace std;
  6. int main(){
  7. setlocale(LC_CTYPE,"Polish"); // obsługa polskich znaków
  8. srand(time(NULL)); // ta funkcja ustawia losowy punkt generowania danych, w tym przypadku wykorzystana została funkcja time z pliku nagłówkowego time.h, funkcja ta zwraca liczbę określającą czas
  9. cout<<"Generowanie liczb pseudolosowych dla pełnego zakresu liczb:"<<endl<<endl;
  10. for(int i = 0; i < 5; i++){
  11. cout<<rand() // ta funkcja zwraca liczbę pseudolosową z zakresu od 0 do 32767, a na jej działanie ma wspływ funkcja srand
  12. <<endl;
  13. }
  14. cout<<endl<<"Generowanie liczb pseudolosowych dla zakresu od -100 do 100:"<<endl<<endl;
  15. for(int i = 0; i < 5; i++){
  16. cout<<(rand() % 200) - 100 // w ten sposób uzyskuje się pseudolosowe liczby o zakresie od - 100 do 100
  17. <<endl;
  18. }
  19. cout<<endl<<endl<<"Wciśnij enter, aby zamknąć program...";
  20. cin.get();
  21. return 0;
  22. }

Przykładowy wynik działania programu:

Generowanie liczb pseudolosowych dla pełnego zakresu liczb:
 
13584
29366
25171
16259
29390
 
Generowanie liczb pseudolosowych dla zakresu od -100 do 100:
 
40
-38
66
56
-17
 
 
Wciśnij enter, aby zamknąć program...

Funkcja srand wraz z funkcją time sprawiają, że po uruchomieniu programu za każdym nowym jego uruchomieniem otrzymane zostaną nowe zestawy liczb. Gdyby usunąć lub wykomentować linijkę kodu z funkcją srand, wtedy przy każdym uruchomieniu programu wygenerowane zostałyby te same liczby.

Komentarze