Lekcja 17 , zadanie 3
Ostatnio zmodyfikowano 2012-06-26 22:32
Berux Temat założony przez niniejszego użytkownika |
Lekcja 17 , zadanie 3 » 2012-06-26 22:05:31 Mam problem z zadaniem 3 lekcji 17. Zadanie polegało na tym, że trzeba było napisać funkcję, która wylosuje liczbę od 50 do 60 i powtórzy ją kilka razy. Błąd tkwi w tym, że gdy program zostanie skompilowany, a następnie uruchomiony to przeważnie wylosowana liczba jest większa niż 60. Oto kod: #include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
void losowanie() { srand( time( NULL ) ); cout <<(( rand() % 60 ) + 50 ) << endl; }
int main() { int a = 0; do { losowanie(); a++; } while( a != 4 ); return 0; } Z góry dziękuję. |
|
czosnek17 |
» 2012-06-26 22:08:17 int wylosowana_liczba =( rand() % ile_liczb_w_przedziale ) + startowa_liczba; |
|
Vallher |
» 2012-06-26 22:10:17 Tutaj masz błąd: cout <<(( rand() % 60 ) + 50 ) << endl; Jeszcze dopowiem jak to dokładnie działa: zwróć uwagę, że np: jakas liczba % 2 może nam dać tylko 2 reszty z dzielenia : 0 lub 1 jakaś liczba % 3 0,1,2 jakaś liczba %60 0,1, ..,59 czyli Ty losujesz liczby z przedzialu: 0+50,1+50,...,59+50. czyli z [50,109] |
|
Berux Temat założony przez niniejszego użytkownika |
» 2012-06-26 22:10:48 |
|
Katruf |
» 2012-06-26 22:11:06 według mnie to powinno być cout <<(( rand() % 10 ) + 50 ) << endl;
|
|
Berux Temat założony przez niniejszego użytkownika |
» 2012-06-26 22:14:31 Wszystko jest OK tylko za każdym uruchomieniem jest ta sama liczba. |
|
czosnek17 |
» 2012-06-26 22:15:26 Spróbuj dać srand (time (null)) na początek programu. |
|
Berux Temat założony przez niniejszego użytkownika |
» 2012-06-26 22:16:47 Właśnie juz to dałem. I dalej tak samo. |
|
« 1 » 2 |