Pseudolosowość liczb (funkcja rand)- Problem
Ostatnio zmodyfikowano 2015-01-31 21:29
tytuspiotr Temat założony przez niniejszego użytkownika |
Pseudolosowość liczb (funkcja rand)- Problem » 2015-01-31 18:10:57 Witam, Mam problem ze zrozumieniem działania tej oto funkcji. Czego dokładnie nie rozumiem w tak prostej funkcji? Otóż chcąc wylosować liczby z przedziału od 4 do 10 wpisywałem taki o to ciąg znaków: (...) (...) = (rand() % 10 )+ 4; /.../ Z kursu wywnioskowałem że jest to prawidłowy zapis (jedna liczba mówi gdzie skończyć a druga gdzie zacząć), jednak używając go w zadaniu w końcowym wyniku widzę liczby większe niz w przedziale (13,12 itp) dopiero zapis: (...) = (rand() % 7 )+ 4; dal mi oczekiwany rezultat (przedział od 4 do 10). Czy ktoś mógłby mi wytłumaczyć czemu tak jest? I jeżeli jest to jedyny prawidłowy zapis to co będę musiał wypisać gdy przyjdzie wylosować liczby z przedziału np 90 do 345? |
|
Monika90 |
» 2015-01-31 18:22:32 rand() % 7 daje liczby z przedziału od 0 do 6 włącznie, po dodaniu 4 otrzymasz liczby z przedziału od 4 do 10. co będę musiał wypisać gdy przyjdzie wylosować liczby z przedziału np 90 do 345?
|
Będziesz musiał wpisać std::uniform_int_distribution<int> d(90, 345); czyli zapomnij o rand() |
|
pekfos |
» 2015-01-31 18:48:57 I jeżeli jest to jedyny prawidłowy zapis to co będę musiał wypisać gdy przyjdzie wylosować liczby z przedziału np 90 do 345? | rand() % (345 - 90 + 1) + 90, jeśli trzymać się funkcji rand(). |
|
rav_jarosz2 |
» 2015-01-31 19:17:12 % oznacza resztę z dzielenia. Więc ta funkcja może sobie reprezentować liczbę np 4839573 a gdy dasz %10 to otrzymasz resztę z dzielenia przez 10. A resztą mogą być liczby od 0 do 9. |
|
tytuspiotr Temat założony przez niniejszego użytkownika |
» 2015-01-31 21:29:21 Nareszcie wszystko jasne :) Dziękuję wszystkim za udzielenie odpowiedzi! |
|
« 1 » |