Funkcje - Pierwsze Starcie (pseudolosowe liczby całkowite)
Ostatnio zmodyfikowano 2015-06-24 13:21
tabupl Temat założony przez niniejszego użytkownika |
Funkcje - Pierwsze Starcie (pseudolosowe liczby całkowite) » 2015-06-24 13:13:45 Kiedy tworzę program, który ma za zadanie wylosować np. 10 liczb całkowitych z konkretnego przedziału, to liczby wylosowane wszystkie są takie same!. Natomiast kiedy w ten sam sposób przerobię program, aby losował liczbę kolejny raz dopiero na życzenie użytkownika (np. poprzez wpisanie jedynki), to znów np. pierwsze trzy liczby są takie same, kolejne trzy inne, a kolejne 4 jeszcze inne. Podejrzewam, że wynika to z zapisu: który, jak rozumiem uzależnia tę losowość od czasu rzeczywistego na komputerze. Kod funkcji losujące liczbę wygląda w ten sposób: int losowe() { srand( time( NULL ) ); return(( std::rand() % 10 ) + 50 ); }
Wychodzi mniej więcej na to, że co sekundę program może wylosować inną liczbę, bo im szybciej klikam, aby wykonać kolejne powtórzenie, tym więcej takich samych liczb jest wypisywanych. Czy da się w jakiś sposób osiągnąć realną losowość, czy nie powinienem na tym etapie edukacji się w to jeszcze zagłębiać? |
|
Monika90 |
» 2015-06-24 13:21:49 Podpowiem Ci: time(NULL) zwraca aktualny czas jako liczbę sekund, to znaczy zwracana przez tę funkcję wartość zmienia się nie częściej niż co sekundę. A generator liczb losowych jest deterministyczny, to znaczy że zainicjalizowany tą samą wartością zwróci tę samą sekwencję liczb |
|
« 1 » |