Losowanie liczb z zakresu
Ostatnio zmodyfikowano 2014-01-24 21:13
kuba551 Temat założony przez niniejszego użytkownika |
Losowanie liczb z zakresu » 2014-01-21 20:54:07 Mam pytanie odnośnie funkcji której napisałem: void losowa( int l_min, int l_max ) { srand( time( NULL ) ); int przedzial; przedzial =( l_max - l_min ) + 1; for( int i = 0; i < 20; i++ ) { cout << endl; for( int i = 0; i < 20; i++ ) { cout <<(( rand() % przedzial ) + l_min ) << " "; } } };
Generalnie funkcja działa dobrze ale chciałbym się dowiedzieć dlaczego gdy zamiast zmiennej "przedział" wstawiam po prostu: (( rand() %( l_max - l_min ) + 1 ) + l_min )
funkcja losuje z przedziału jaki otrzymuje od liczby startowej(l_min) w dwie strony. Np. przedział wynosi 5, a liczba startowa(l_min) 10 wtedy zakres losowania jest od 5 do 15 zamiast od 10 do 15 dlaczego? |
|
alixir |
» 2014-01-21 22:33:37 Chyba troszkę zamieszałeś :) Po 1. Przedział od 10 włącznie do 15 włącznie wynosi 6, a nie 5 jak piszesz Po 2. Usuń dwa nawiasy bo wprowadzają zamęt ( rand() %( l_max - l_min + 1 ) + l_min ) |
|
Wiesiek |
» 2014-01-24 10:14:46 wywołuj funkcję: losowa(10,15), wtedy uzyskasz wynik jaki chciałbyś. |
|
kuba551 Temat założony przez niniejszego użytkownika |
» 2014-01-24 21:13:24 rand() %( l_max - l_min ) + l_min
Fakt trochę tych nawiasów za dużo. |
|
« 1 » |