Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Lekcja 17 , zadanie 3

Ostatnio zmodyfikowano 2012-06-26 22:32
Autor Wiadomość
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:

C/C++
#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ę.
P-59188
czosnek17
» 2012-06-26 22:08:17
int wylosowana_liczba =( rand() % ile_liczb_w_przedziale ) + startowa_liczba;
P-59189
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]

P-59190
Berux
Temat założony przez niniejszego użytkownika
» 2012-06-26 22:10:48
P-59191
Katruf
» 2012-06-26 22:11:06
według mnie to powinno być

cout <<(( rand() % 10 ) + 50 ) << endl;
P-59192
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.
P-59193
czosnek17
» 2012-06-26 22:15:26
Spróbuj dać srand (time (null)) na początek programu.
P-59194
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.
P-59196
« 1 » 2
  Strona 1 z 2 Następna strona