Programuję grę i w pewnym wytłumaczeniu jak zrobic losowośc pewnych obiektów została użyta ta ,linijka:
if (rand() % 500 == 0)
Czy ktoś mi może dokładnie wytłumaczyć jak ona działa i o co w niej chodzi?
Programuję grę i w pewnym wytłumaczeniu jak zrobic losowośc pewnych obiektów została użyta ta ,linijka:
if (rand() % 500 == 0)
Czy ktoś mi może dokładnie wytłumaczyć jak ona działa i o co w niej chodzi?
Ta linijka sprawdza, czy reszta z dzielenie przez 500 liczby zwróconej przez funkcję rand()
jest równa 0. rand()
zwraca liczbę pseudolosową z zakresu 0 do RAND_MAX
(RAND_MAX
to co najmniej 32767).
z szansą 1/500 - wykonaj ...
Dzięki, już teraz to lepiej rozumiem :)
Warto mieć na uwadze, że rand()
nie gwarantuje żadnego rozkładu i jest raczej kiepskim (acz zazwyczaj szybkim) generatorem. Szansa wcale nie musi wynosić 1/500.
Implementacja z glibc całkiem dobrze sobie jednak radzi: http://ideone.com/0jZJST