Co oznacza ta linijka

0

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?

0

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).

1

z szansą 1/500 - wykonaj ...

0

Dzięki, już teraz to lepiej rozumiem :)

1

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1