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

[c++] srand( time( NULL ) );

Ostatnio zmodyfikowano 2015-09-23 21:27
Autor Wiadomość
Morksil
Temat założony przez niniejszego użytkownika
[c++] srand( time( NULL ) );
» 2015-09-22 21:04:33
Cześć!
Mam prosbe odnosnie tej funkcji. Dowiedzialem sie o niej podczas kursu c++, który właśnie przerabiam. Wiem, że jest wykorzystywana przy pseudolosowaniu liczba całkowitych. Rozumiem, że srand określa punkt startowy mechanizmu generowania liczb całkowitych. "time" odnosi sie do biblioteki ctime i pozwala na odczytanie czasu z komputera i przekształcenie go na liczbę. Nie do końca rozumiem zapis NULL w nawiasie odnoszacym sie do "time". Mógłby mi ktoś to wytłumaczyć w prosty sposób? Dopiero sie ucze a nie chcę iśc dalej jeśli nie rozumiem czegoś po drodze. Jeszcze chciałbym się dowiedzieć w jakich przypadkach zapis ten może znajdować się w innym miejscu kodu a nie tlyko na początku.

Pozdrawiam!!!
P-137820
pekfos
» 2015-09-22 21:20:25
Nie do końca rozumiem zapis NULL w nawiasie odnoszacym sie do "time".
NULL to stała.
P-137822
carlosmay
» 2015-09-22 21:24:48
Zwykle jest to na początku, ale ważne jest żeby to było przed użyciem rand().

Parametr o wartości NULL, 0,  ustawia ziarno na postawie aktualnego czasu.
P-137823
pekfos
» 2015-09-22 21:26:23
Parametr o wartości NULL, 0,  ustawia ziarno na postawie aktualnego czasu.
Co za bzdura.
P-137824
carlosmay
» 2015-09-22 21:44:04
Funkcja srand () pozwala na ustawienie własnego zarodka generatora liczb losowych
i zainicjowanie odmiennej od poprzedniej sekwencji liczb losowych.
Program w roli takiego zarodka wykorzystuje początkowo wartość funkcji time (0) .
Wywołanie time (0) zwraca bieżący czas kalendarzowy, często reprezentowany liczbą sekund od
pewnej ustalonej daty odniesienia. Stephen Prata.
 
P-137826
pekfos
» 2015-09-22 21:47:13
No i co? time(0) zwraca aktualny czas, ale bynajmniej nie dlatego, że podano akurat 0.
P-137827
carlosmay
» 2015-09-22 22:31:39
Czyli to funkcja time() zwraca liczbę sekund od 1 sty 1970r, która to liczba używana jest przez funkcję srand(),
a stała NULL jest tam, bo nie przekazujemy do funkcji time() zmiennej, do której funkcja time() mogłaby zapisać zwróconą wartość?
C/C++
srand( time( NULL ) ); // ustawia na podstawie czasu
srand( zmienna ); // ustawia na podstawie zmiennej
P-137831
Monika90
» 2015-09-22 22:58:40
time(&czas); zwraca czas i zapisuje ten sam czas do zmiennej czas, a time(nullptr); tylko zwraca i niczego nie zapisuje, bo nie ma gdzie. Zamiast NULL jest nullptr, ponieważ NULL jest przestarzałe (rand zresztą też).
P-137832
« 1 » 2
  Strona 1 z 2 Następna strona