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

Czy srand(time(NULL)) musi zostać użyty w funkcji main aby działał prawidłowo?

Ostatnio zmodyfikowano 2024-04-21 21:01
Autor Wiadomość
piratek
Temat założony przez niniejszego użytkownika
Czy srand(time(NULL)) musi zostać użyty w funkcji main aby działał prawidłowo?
» 2024-04-19 04:51:57
Jestem na lekcji z funkcjami, a dokładniej na zadaniu:
"Napisz funkcję, która losuje liczbę z przedziału od 50 do 60 włącznie. Wywołaj funkcję kilka razy (wypisz wylosowane wartości na ekran) w celu przetestowania czy działa ona poprawnie."
Przetestowałem użycie
srand( time( NULL ) )
 w mojej nowej funkcji, jednak program nie działał prawidłowo, a liczba za każdym razem wylosowała się ta sama. Zastanawiam się, czy jedynym wyjściem z tej sytuacji jest użycie
srand( time( NULL ) )
 na samym początku funkcji main. To nie jest zmienna więc nie będę za to palony na stosie, zgadza się?

Mój kod:
C/C++
#include <iostream>
using namespace std;

void losowanieliczby()
{
   
   
int losowaliczba =( rand() % 11 ) + 50;
   
cout << losowaliczba << endl;
}

int main()
{
   
srand( time( NULL ) );
   
int ile = 50;
   
   
do
   
{
       
losowanieliczby();
       
ile--;
   
}
   
while( ile != 0 );
   
   
return 0;
}
P-180979
DejaVu
» 2024-04-19 08:31:55
https://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Pseudolosowe-liczby-calkowite/290

Tu masz wyjaśnione, że srand powinno być wywoływane na początku aplikacji.
P-180980
pekfos
» 2024-04-19 21:12:27
Nie musi być na samym początku, wystarczy że będzie raz, przed pierwszym użyciem rand(). srand() inicjalizuje generator pseudolosowy i ciąg losowych liczb jaki uzyskasz zależy tylko od argumentu do srand(). A podajesz tam wynik time(), aktualny czas z dokładnością do jednej sekundy.
P-180981
piratek
Temat założony przez niniejszego użytkownika
» 2024-04-21 21:01:54
Dziękuję za pomoc. 🫡
P-180982
« 1 »
  Strona 1 z 1