C++: seeding random number generator außerhalb von main()

War ich ein einfaches Programm, das simuliert einen Münzwurf für meine Klasse. (Eigentlich Klasse ist über diesen Begriff und ich arbeite einfach durch den rest der Projekte, die nicht erforderlich). Es beinhaltet das erstellen und aufrufen einer Funktion generiert eine Zufallszahl zwischen 1 und 2. Ursprünglich habe ich versucht die Samen, die random number generator innerhalb der Funktion, wäre es (coinToss); es kam jedoch nicht eine zufällige Zahl erzeugen. Jedes mal, wenn das Programm ausgeführt wurde, es war die gleiche Nummer, als hätte ich nur verwendet,

rand()

statt

unsigned seed = time(0);
srand(seed);
rand();

Doch, wenn ich bewegt die oben im

int main()

es geklappt hat.

Meine Frage ist, 1)warum hat es nicht funktioniert, wenn das setup innerhalb der Funktion, die es aufgerufen und (2) wie funktioniert rand()
Zugang zu dem, was getan wurde, durch srand() wenn Sie nicht beide auftreten, in der gleichen Funktion?
Natürlich, ich bin ein Anfänger also bitte verzeiht mir, wenn ich nicht formulieren Sie die Frage richtig. Auch mein Buch hat nur kurz berührt rand() und srand() so das ist alles was ich wirklich weiß.

vielen Dank für jede Hilfe!!!

Relevante code:

Ersten Versuch, hat nicht funktioniert:

int main()
{  
    //...........
    coinToss();
    //...........
 }

 int coinToss()
 {
    unsigned seed = time(0);
    srand(seed);

    return 1 + rand() % 2;
  }

Zweiten Versuch, der nicht funktioniert:

int main()
{
    unsigned seed = time(0);
    srand(seed);

    coinToss();
 }

 int coinToss()
 { 
    return 1 + rand() % 2;
  }
Durch tun, %2, Sie sind wirklich nur die Prüfung der Zufälligkeit des bit 0 von der Nummer (die Hexe hat sich gezeigt, dass Sie nicht zufällig in rand () - Fall). Ich habe einmal vorgeschlagen (SO) tun integer-division. ie-rand()/ (RAND_MAX/2), aber jemand wies darauf hin, dass war nur die überprüfung bit 31 in der Rufnummer.

InformationsquelleAutor knobcreekman | 2010-12-15

Schreibe einen Kommentar