Zufallszahl bleibt gleich



  • Die Zufallszahl wird hier einmal generiert und bleibt dann auch bei erneutem Programmstart gleich. Woran liegt das?
    (Nebenbei bin ich auch für Tipps dankbar, die mir helfen, meine Programme übersichtlicher zu gestalten.)

    [code="cpp"]
    #include <iostream>
    #include <stdlib.h>
    using namespace std;

    int Zaehler = 0; // Anzahl bisheriger Versuche
    int Zufallszahl = rand() % 10 + 1;; // Generierung Zufallszahl
    int Versuch; // Die selbst geratene Zahl

    int main()
    {
    cout << "Du musst eine Zahl zwischen 1 und 60 erraten" << endl // Spiel wird erklärt
    << "Du hast 5 Versuche!";

    while(Zaehler != 5 && Versuch != Zufallszahl) // Beginn des "Spiels"
    {
    cout << "\nRate: ";
    cin >> Versuch; // Benutzer soll raten

    if(Versuch > Zufallszahl) // Wenn geratene Zahl groesser als gesuchte Zahl
    {
    cout << "Du hast die Zahl zu hoch geschaetzt.";
    }

    else if(Versuch < Zufallszahl) // Wenn kleiner als ges. Zahl
    {
    cout << "Du hast die Zahl zu niedrig geschaetzt.";
    }

    Zaehler++; // Versuch verbraucht
    }

    if(Versuch==Zufallszahl) // Erfolgsmeldung
    {
    cout << "\nDu hast die Zahl erraten!";
    }

    else // Gäscheiterrrt!!!
    {
    cout << "\nAlle Versuche aufgebraucht. Beim naechsten mal klappt es bestimmt.";
    }
    cin >> Versuch;
    return 0;
    }



  • srand weggelassen



  • Wenn du eine neue IDE verwendest, würde ich rand nicht mehr als Zufallszahlengenerator verwenden, ansonsten musst du mit srand einen seed setzen.

    Am besten mit der Systemzeit, um immer ein anderes Ergebnis zu bekommen.
    http://www.cplusplus.com/reference/cstdlib/srand/

    Ansonsten findest du hier moderne Zufallszahlengeneratoren: http://www.cplusplus.com/reference/random/

    Beispiel:

    #include <random>
    int main()
    {
      std::default_random_engine generator;
      std::uniform_int_distribution<int> distribution(0,9);
      int number = distribution(generator);
    
      return 0;
    }
    


  • Okay, vielen Dank für die Hilfe!



  • Ruvi, was hat das mit der IDE zu tun?



  • Sksks schrieb:

    Ruvi, was hat das mit der IDE zu tun?

    War vielleicht ein wenig ungenau ausgedrückt, aber <random> wurde erst mit C++11 eingeführt.

    Also brauchst du einen Compiler der C++11 kann, so war das eigentlich gemeint.



  • Vengeancos schrieb:

    Die Zufallszahl wird hier einmal generiert und bleibt dann auch bei erneutem Programmstart gleich. Woran liegt das?

    Wenn ich Sinus von 0.35 berechne bleibt der bei erneuten Programmmstart gleich. Woran liegt das?


Anmelden zum Antworten