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

Pseudolosowość liczb (funkcja rand)- Problem

Ostatnio zmodyfikowano 2015-01-31 21:29
Autor Wiadomość
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?
P-125817
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()
P-125818
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().
P-125820
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.
P-125823
tytuspiotr
Temat założony przez niniejszego użytkownika
» 2015-01-31 21:29:21
Nareszcie wszystko jasne :) Dziękuję wszystkim za udzielenie odpowiedzi!
P-125824
« 1 »
  Strona 1 z 1