[C++]Generowanie liczby losowej


(Wojtanos) #1

Chciałbym, żeby program losował mi liczbę z przedziału od 1-50. Jak mam to wykonać korzystając z DevC++?


(Sawyer47) #2

Jeżeli chodzi o funkcje standardowe to tu znajdziesz:

http://www.cppreference.com/stdother/index.html

Ogółem na początku srand(time(NULL));, a późniejrand() zwraca Ci losową liczbę.


(Wojtanos) #3

A przedział od 1-50?

Program ma losować jedną liczbę z przedziału od 1 do 50.


(Sawyer47) #4

rand() nie przyjmuje żadnych argumentów co do przedziału, trzeba to zrobić działaniami matematycznymi, tak jak z dowolnej liczby <0, DUŻO> zrobić <1, 50> :slight_smile:


(Wojtanos) #5

Proszę o poprawienie kodu, aby losował jedną liczbę od 1-50.


(Matheosh) #6

po pierwsze potrzebujesz zmiennej która będzie przyjmować wartość losowanej liczby, np.:

int main()

{

int losowa ;

srand((int)time(NULL));

losowa =rand()%50+1;

cout << losowa ;

getch();

}


(Wojtanos) #7

O to mi chodziło! Bardzo dziękuję! :mrgreen:


(Purre) #8

Dobra rada - nigdy nie powinno sie uzywac randa z operacja modulo, co zreszta jest wyraznie zaznaczone w dokumentacji funkcji. Linijka:

losowa=rand()%50+1;

powinna zostac zastapiona przez

losowa = 1 + (int) (50.0 * (rand() / (RAND_MAX + 1.0)));

celem uzyskania lepszej losowosci i kompatybilnosci. Dla zainteresowanych tematem polecam odwiedzic ta strone.