Zufallszahl



  • Hi Leute ich habe mal wieder eine Frage 😃

    int main ()
    {
       for (i=0; i<6;i++)
        {
           Vehicles[i].writeVehicleY();
    
        }
    }
    

    In meiner Main gebe ich mit "for" 6 Fahrzeuge mit Hilfe der write Funktion aus.

    srand (time(NULL));   //Zufallszahl für die Seriennummer
    stringstream zufallsnummer,ok;
    string nnn;
    int i = rand () % 1000000+1;
    zufallsnummer <<setfill('0')<<setw(6)<<i<< '\n';
    ok <<setfill('0') << setw(3)<< counter << '\n';
    serialNumber=zufallsnummer.str();
    nnn=ok.str();
    
    cout << "<" << manufacturer << ">-" << "<" << model << ">-" << "<" << serialNumber << ">-" <<  nnn <<  endl;
    

    Das ist der Ausschnitt für die Zufallszahl in der Funktion. Soweit funktioniert es auch, es wird bei jedem Programmstart eine neue Zahl ausgegeben, allerdings bekommt jedes der 6 Array-Fahrzeuge die gleiche Zufallszahl.
    Da, soweit ich mich richtig informiert habe, die Zufallszahl mit Hilfe einer Zeit gesetzt wird hatte ich überlegt ob die Arraydurchläufe zu "schnell" sein könnten und daher jedes Fahrzeug die selbe Zahl zugewiesen bekommt?
    Kann mir jemand sagen wie ich dieses Problem lösen kann?



  • Du darfst srand nur 1x aufrufen. 1x im ganzen Programm! Keinesfalls 1x pro Funktionsaufruf.

    Für den moderneren C++-Weg siehe das Beispiel auf https://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution



  • @wob genial es funktioniert,
    Danke 🙂


Anmelden zum Antworten