Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Funkcje - Pierwsze Starcie (pseudolosowe liczby całkowite)

Ostatnio zmodyfikowano 2015-06-24 13:21
Autor Wiadomość
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:
C/C++
srand( time( NULL ) );
który, jak rozumiem uzależnia tę losowość od czasu rzeczywistego na komputerze. Kod funkcji losujące liczbę wygląda w ten sposób:
C/C++
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ć?
P-134033
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
P-134034
« 1 »
  Strona 1 z 1