Co oznacza ta linijka

L9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 43
0

Programuję grę i w pewnym wytłumaczeniu jak zrobic losowośc pewnych obiektów została użyta ta ,linijka:

Kopiuj
if (rand() % 500 == 0) 

Czy ktoś mi może dokładnie wytłumaczyć jak ona działa i o co w niej chodzi?

Endrju
  • Rejestracja: dni
  • Ostatnio: dni
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).

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1

z szansą 1/500 - wykonaj ...

L9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 43
0

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

Endrju
  • Rejestracja: dni
  • Ostatnio: dni
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.