srand(int) Zurücksetzen ?



  • wenn ich:

    srand(4);
    // hier x-mal rand()%UPPER
    srand(2);
    

    aufrufen ist das nicht dasselbe wie

    srand(2);
    

    Beachte: Ich nehme Zufallszahlen zwischen srand(4) und srand(2) !

    Aber ich muss nach jedem Aufruf der Funktion bei selber srand(int) das selbe
    Ergebnis erhalten, weil ich mit Zufallszahlen eine Text verschlüssele und das
    immer GLEICH sein muss und ich will das Prog nicht nach jedem Durchgang neustarten
    (das Prog)



  • dann machst du was falsch...

    #include <cstdlib>
    #include <iostream>
    using namespace std;
    
    int main()
    {
        srand(2);
        cout << rand() << endl;
        rand();
        rand();
        rand();
        cout << rand() << endl;
        cout << "reset" << endl;
        srand(4);
        cout << rand() << endl;
        rand();
        rand();
        rand();
        cout << rand() << endl;
        cout << "reset" << endl;
        srand(2);
        cout << rand() << endl;
        rand();
        rand();
        rand();
        cout << rand() << endl;
    }
    

    ergibt

    1505335290
    747983061
    reset
    1968078301
    460165363
    reset
    1505335290
    747983061
    

    Denn ein jedes rand() hinter einem srand() mit gleichem seed erzeugt die gleichen Zufallswerte.



  • Argh, das srand() initialisiert den Zufallszahlengenerator!!! Du kannst nicht zwischen srand(4) und srand(2) Zufallszahlen generieren lassen!!! Schau dir da nochmal die Hilfe an.



  • flaschenhals schrieb:

    Argh, das srand() initialisiert den Zufallszahlengenerator!!! Du kannst nicht zwischen srand(4) und srand(2) Zufallszahlen generieren lassen!!! Schau dir da nochmal die Hilfe an.

    Wieso den das, geht doch, wie... du ? (sagtest)
    Hä dann versteh ich jetzt aber den letzten post nicht ?



  • Sorry lag nicht am srand sondern am Vector.randomshuffle
    ähm, den muss ich dann also speichern und auf Anfang urücksetzten, kann man das irgendwie einfach machen, ohne jedes Element einzeln zu ändern ?
    also

    int i = 0;
    while (i < Vector1.size())
    {
      i++;
      Vector1[i-1] = VectorAnfang[i-1]
    }
    


  • Suchst du sowas?

    #include <algorithm>
    std::copy(Vector1.begin(), Vector1.end(), VectorAnfang.begin());
    


  • ÄÄÄHHHMM
    Kannte ich schon, kam nur nicht drauf.

    ________________________________________
    MIST



  • Verstehst du denn jetzt, was srand() macht? Tipp: Auf www.cplusplus.com sind nahezu alle Funktionen und Klassen der Standardbibliothek beschrieben.



  • Ja wusste ich schon lange, aber ich dachte (nicht denken, wissen)....
    Ja was dachte ich denn ? Ich glaubte an die dunklen Mächte des VC++ Compilers.
    😮 😃


Anmelden zum Antworten