[Lekcja 17] Losowane liczby się powtarzają
Ostatnio zmodyfikowano 2012-02-23 19:35
czosnek17 Temat założony przez niniejszego użytkownika |
[Lekcja 17] Losowane liczby się powtarzają » 2012-02-23 18:53:39 Cześć. Jakby co to jest mój pierwszy post. Mam taki program: #include <iostream> #include <cstdlib> #include <ctime>
int funkcjalos() { std::cout << "funkcja dziala" << std::endl; int liczbax =( rand() % 10 ) + 1; return liczbax; std::cin.clear(); std::cin.sync(); }
int main() { srand( time( NULL ) ); std::cin.clear(); std::cin.sync(); int liczba; int tuwynik = funkcjalos(); do { std::cout << "wylosowana liczba= " << tuwynik << std::endl; std::cout << "|losuj-1 wyjdz-0| " << std::endl; std::cin >> liczba; if( liczba == 1 ) { funkcjalos(); } } while( liczba == 1 ); return 0; } Pomimo srand( time( NULL ) ); z każdym razem liczba jest ta sama. I dlaczego funkcja losująca sama się wywołuje? |
|
pekfos |
» 2012-02-23 18:58:33 Bo tylko raz przypisujesz wartość zmiennej? |
|
czosnek17 Temat założony przez niniejszego użytkownika |
» 2012-02-23 19:10:08 Zmiennej liczbax? Jak to naprawić? |
|
pekfos |
» 2012-02-23 19:11:30 funkcjalos(); zamień na zmienna = funkcjalos(); i powtórz sobie funkcje. chyba niezbyt je rozumiesz. |
|
czosnek17 Temat założony przez niniejszego użytkownika |
» 2012-02-23 19:21:49 Tak, musiałem na zmienną dać tuwynik. Dzięki. Ale dlaczego funkcja się wywołuje na początku programu, tak powinno być? zawsze musze się pomotać... |
|
pekfos |
» 2012-02-23 19:24:01 Ale dlaczego funkcja się wywołuje na początku programu, tak powinno być? |
Jakbyś nie napisał wywołania to by się nie wywoływała. int main() { srand( time( NULL ) ); std::cin.clear(); std::cin.sync(); int liczba; int tuwynik = funkcjalos();
|
|
czosnek17 Temat założony przez niniejszego użytkownika |
» 2012-02-23 19:26:46 Myślałem, że się wywoła dopiero po wpisaniu 1. Jak to zrobić? |
|
Pankulka |
» 2012-02-23 19:28:20 Chodzi o to, że liczba musi być losowana za każdym razem kiedy ma być wypisana. Jeżeli wylosujesz liczbę przed pętlą i zostaje wylosowane np 10, to przy wciskaniu "1" wypisujesz cały czas tą samą liczbę ;) Jeżeli liczbę będziesz losował w pętli to za każdym razem będzie ona na nowo losowana.
|
|
« 1 » 2 |