[C] Losowanie liczby z zakresu + dziwne zachowania

0

Mam problem. Wywoluje funkcje:

int losowana=0;
srand ( time ( NULL ));
losowana = rand () % 30000;

Kod powyzej losuje liczbe od 0 do 30000, natomiast potrzebuej wylosowac liczbe od 20000 do 30000 a nie od 0. Przy wpisaniu w nawias rand () % (przedzial) zupelnie ignoruje ten przedzial liczb. Takze jak to zrobic.

Druga sprawa, podczas losowania liczby od 0 do 30000 jako pierwsza losuje sie 24700 nastepna losuje sie 24855 nastepna 24633 nastepna 24777.... czyli z zakresu nie od 0 do 30000 tylko od 24500 do 24900 jakos tak dziwnie. Co to moze powodowac.

Dzieki za pomoc z gory,
pozdrawiam

0

losujesz liczbe z przedzilu od 0 do 10000 czyli rand() % 10000 i dodajesz do niej 20000 i w ten sposob jak wylosuje 0 masz 0 + 20000 jak 10000 + 20000 masz 30000.

0

Dzieki wielkie smiga jak zlotko. Pozostaje jeszcze tylko ten dziwny motyw ze jezeli uzyje takiego kodu:

int losowana=0;
srand ( time ( NULL ));
losowana = rand () % 30000;

To losuje wartosc pomiedzy 1 a 30000.
Ale czy na pewno?

Za pierwszym wywolaniem tej funkcji losuje sie powiedzmy 8500, po ponownym wywolaniu 8643 po ponownym 8433 po ponownym 8544 po ponownym 8611 itd.

Kompiluje od nowa...

Jezeli za pierwszym wylosuje sie 25800 to po ponownym wywolaniu wylosuje sie 25830 po ponownym 25200 po ponownym 25900 po ponownym 25734 po ponownm 25499 itd...

Widac analogie? Kazdy nastepny wylosowany wynik po pierwszym jest podobny do pierszego. Co jest nie tak ? :|

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