Kiedy pisałem jakieś tam projekciki, to wystarczyło zwyczajne rand()%liczba.
…i tym samym zawsze losowałeś te same liczby. A po drugie jest era C++1{1,4,7}, więc zamiast randa masz już lepsze generatory liczb pseudolosowych.
Kiedy nie użyjesz funkcji srand
do ustawienia ziarna będzie używana domyślna wartość - 1
. Nie ważne czy będzie to 1, 3 czy 27 uruchomienie programu - ziarno będzie takie same.
Co innego kiedy użyjesz srand(time(NULL))
- jako że time(NULL)
zwraca czas unixowy masz pewność że ziarno będzie inne za każdym uruchomieniem programu (chyba że odpalisz 2 programy w tej samej sekundzie).
atmal napisał(a):
Kiedy nie użyjesz funkcji
srand
do ustawienia ziarna będzie używana domyślna wartość -1
. Nie ważne czy będzie to 1, 3 czy 27 uruchomienie programu - ziarno będzie takie same.
Co innego kiedy użyjeszsrand(time(NULL))
- jako żetime(NULL)
zwraca czas unixowy masz pewność że ziarno będzie inne za każdym uruchomieniem programu (chyba że odpalisz 2 programy w tej samej sekundzie).
Okej, a mógłbym mieć pytanie? Jak konkatenować stringi w printf? Mam takie coś:
int qOct = 192, wOct = 168, eOct=rand()%9, rOct=rand()%100;
printf(qOct+"."+wOct+"."+eOct+"."+rOct);
Ale dostaję błędy. Nie wiem jak skonkatenować te napisy...
W C/C++ robisz to troszkę inaczej, mianowicie w printf piszesz format zmiennych wraz z tekstem a potem podajesz je jako argumenty, czyli:
int qOct = 192
int wOct = 168
int eOct=rand()%9
int rOct=rand()%100;
printf("%d.%d.%d.%d", qOct, wOct, eOct, rOct);
Poza tym - napisz te inty w oddzielnych liniach tak jak wyżej bo inaczej jest to strasznie nieczytelne.
Zapoznaj się z tym, jeśli chcesz poznać opcje generowania liczb losowych w nowoczesnym C++: http://en.cppreference.com/w/cpp/numeric/random
A co do konkatenacji: printf("%d.%d.%d.%d", qOct, wOct, ...);