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

Losowanie liczb z zakresu

Ostatnio zmodyfikowano 2014-01-24 21:13
Autor Wiadomość
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:

C/C++
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:
C/C++
(( 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?
P-102747
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 )
P-102764
Wiesiek
» 2014-01-24 10:14:46
wywołuj funkcję: losowa(10,15), wtedy uzyskasz wynik jaki chciałbyś.
P-103027
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.
P-103112
« 1 »
  Strona 1 z 1