Losowanie liczby w przedziale 0 do 1 milion

0

Witam serdecznie.

Mam pewien problem z jednym zadaniem.

Funkcja ma losować liczbę typu INT ( 32 bitową ( wiem, że int jest 16 bitowy )) i zwracac losowa wartosc z przedzialu 0 do 1 000 000.

napisałem coś takiego w pętli for :
petla...
int liczba = rand();
liczba = liczba << 15;
liczba = liczba % 1000001;

lecz kolega sugeruje mi że ma to wyglądać trochę inaczej, a tak :

petla...
int liczba = rand();
liczba = liczba << 15;

liczba = liczba + rand(); <----- Dodane od kolegi

liczba = liczba % 1000001;

Mógłby ktoś mi wytłumaczyć dlaczego ? wydaje mi się że program moj losuje prawidlowo

0

C++ to nie moj jezyk, ale co oznacza linia liczba = liczba < 15; ? Czy tego wszystkiego nie lepiej ująć w liczba = rand()%1000001 ?

1

Użyj odpowiedniej dystrybucji z <random>

0

Typ int jest 32 bitowy. Funkcja losująca liczbę:

int losuj()
{
      return (rand() % 1000001);
}

Nie zapomnij o dodaniu na początku programu linijki:

srand(time(0));

i dodania nagłówków cstdlib i ctime.

1 użytkowników online, w tym zalogowanych: 0, gości: 1