Czy srand(time(null)) jest potrzebne?

0

Kiedy pisałem jakieś tam projekciki, to wystarczyło zwyczajne rand()%liczba.

0

…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.

0

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).

0
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ż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).

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...

1

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.

0

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, ...);

1 użytkowników online, w tym zalogowanych: 0, gości: 1