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

Funkcja losująca

Ostatnio zmodyfikowano 2013-07-10 21:34
Autor Wiadomość
Highlander
Temat założony przez niniejszego użytkownika
Funkcja losująca
» 2013-07-10 20:18:44
Witam,
mam pytanie, w którym miejscu w poniższym kodzie, wstawić "srand( time( NULL ) );" jeżeli moja funkcja korzysta z rand() przed main'em, a właściwie kompilator ? Pytam bo nie moge sie z tym uporać, bo do tej pory wiem, że musiałem po prostu to zadeklarować w main, a, że funkcja jest przed main więc jako początkujący sie pogubiłem. W konstruktorze kompilator mi wywala błąd przy rand(), że nie jest zadeklarowane. Z góry dziękuje za odpowiedz.
C/C++
#include <iostream>
#include <cstdio>
#include <ctime>
using namespace std;

class Babelkowe
{
private:
    int n;
    int tab[];
public:
    Babelkowe( int _n )
    {
        n = _n;
        for( int i = 0; i < n; i++ )
             tab[ i ] = rand();
       
    }
P-87410
pekfos
» 2013-07-10 20:40:40
jeżeli moja funkcja korzysta z rand() przed main'em
W jakim sensie?

//edit:
Teraz doczytałem, o co chodzi ;P srand(time(NULL)) to żadna deklaracja, tylko wywołanie funkcji ustawiającej ziarno dla randa. Błąd jest dlatego, że nie dołączyłeś <cstdlib>.
P-87413
Highlander
Temat założony przez niniejszego użytkownika
» 2013-07-10 20:44:31
Racja, ok dziękuje Panu :)
btw
ziarno to kolokwialnie mówiąc co takiego ? skrót, określenie na ?:)
P-87414
pekfos
» 2013-07-10 21:10:00
P-87422
domin568
» 2013-07-10 21:10:50
To oznacza że losowość będzie przypięta do czasu w komputerze . Czyli jeżeli miałbyś funkcje która wczytywała by z klawiatury , i jeżeli byś coś wpisał do programu , robiąc to bardzo szybko mógłbyś uzyskać taki sam wynik .
P-87423
kubawal
» 2013-07-10 21:13:39
To oznacza że losowość będzie przypięta do czasu w komputerze
Nie, to oznacza, że na początku wartość ziarna będzie taka sama, jak czas, który był w komputerze, w momencie inicjalizacji ziarna
P-87424
domin568
» 2013-07-10 21:23:34
No to dlaczego jeżeli wywołam kilka funkcji losujących w tym samym czasie to wynik losowania będzie ten sam ?
P-87432
pekfos
» 2013-07-10 21:34:44
No to dlaczego jeżeli wywołam kilka funkcji losujących w tym samym czasie to wynik losowania będzie ten sam ?
Strzelam, że wywołasz razem z srand(time(NULL)). Wartości będą takie same, bo wartość time() zmienia się co sekundę.

To oznacza że losowość będzie przypięta do czasu w komputerze
Nieee, to znaczy, że aktualny czas jest użyty jako ziarno. Potem generator sam będzie działać, czas jest pobierany tylko raz. Nie ma mowy o żadnym przypinaniu.
P-87437
« 1 »
  Strona 1 z 1