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

Losowanie

Ostatnio zmodyfikowano 2013-11-23 18:30
Autor Wiadomość
mgrD
Temat założony przez niniejszego użytkownika
Losowanie
» 2013-11-23 18:12:56
Witam, mam pewien kłopot - mianowicie kod ten działa dobrze:
C/C++
int hej =( rand() % 10 + 48 );
std::string deb +=( char ) hej;

ale gdy chciałem go skrócić ciągle losuje te same liczby(jak zaznacze, że ma wylosować 3 liczby to zawsze są to 174, jak ma wylosować 4 liczby to jest to 1740, jak pięć to 17409 itp :>

C/C++
std::string deb +=( char )( rand() % 10 + 48 );
Zapewne nie można tego tak skrócić ale zapytać można.
P-97185
Buby
» 2013-11-23 18:18:11
Porównaj sobie te dwa kody i zobacz co jest nie tak.

int wylosowana_liczba =( rand() % ile_liczb_w_przedziale ) + startowa_liczba;


A to twój kod:

std::string deb +=( char )( rand() % 10 + 48 );


U Ciebie wychodzi na to, że program, ma 50 liczb w przedziale bez wartości startowej - być może to jest przyczyną.

A wywołałeś na początku programu
srand( time( NULL ) );
 ?
Ta linijka odpowiada za pseudo losowość - losowanie zaczyna od punktu aktualnego czasu.
W innym wypadku wyniki losowania będą za każdym razem takie same.
P-97187
mgrD
Temat założony przez niniejszego użytkownika
» 2013-11-23 18:24:31
No mój rand zrobiony na przykładzie z http://www.cplusplus.com​/reference/cstdlib/rand/
C/C++
v3 = rand() % 30 + 1985; // v3 in the range 1985-2014

@Ale fakt, nie dałem srand ;/
P-97188
kynol
» 2013-11-23 18:30:02
to dodaj #include <ctime>, pozniej w funkcji main(); dodaj srand(time(NULL)); i ustaw nawiasy w ten sposob:
C/C++
std::string deb +=( char )( rand() % 10 ) + 48;

Mysle ze teraz powinno dzialac:)
P-97189
mgrD
Temat założony przez niniejszego użytkownika
» 2013-11-23 18:30:51
Do tego mojego kodu dodałem tylko srand i działa pięknie.
P-97190
« 1 »
  Strona 1 z 1