Warum immer 1



  • Ich habe eine kleine Funktion schreiben wollen mit der ich für mein Spiel
    eine Zufallszahl generieren kann.
    Nur leider kriege ich immer eine "1" als Rückgabewert. Warum??

    #include <cstdlib>
    #include <iostream>
    #include <cmath>
    
    using namespace std;
    /**
      * Diese Funktion ist dazu da, um die Zufallszahlen zu generieren
      * @author David Becker
    */ 
    
    static int zufallszahl()
    {
        srand (time(NULL));
        return rand()%7;
    }    
    
    int main()
    {
        cout<<zufallszahl;
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Ich hoffe ihr könnt mir weiterhelfen.
    Danke schoneinmal im Voraus.





  • Also dein Beispiel hat nur ein paar kleine Fehler drin.

    So sollte es funktionieren:

    #include <iostream> 
    #include <time.h>   //srand und rand ist in der time.h
    using namespace std; 
    
    static int zufallszahl() 
    { 
    	srand (time(NULL)); 
    	return rand()%7; 
    }     
    
    int main() 
    { 
    	cout<<zufallszahl(); //Hier hattest du die Klammern vergessen.
    
    	system("PAUSE"); 
    	return EXIT_SUCCESS; 
    }
    

    smilingman



  • Das Liegt daran, dass du jedesmal wenn du eine Zufallszahl berechnen willst, erstmal srand aufrufst. Das reicht wenn du das einmal am Anfang machst.
    Außerdem liefert time(NULL) die Zeit in Sekunden seit Programmstart.
    Und wenn du das immer als erstes aufrufst, sollte das auch immer das selbe sein.

    Ich würde vorschlagen du benutzt Funktionen, die Zahlen liefern die nicht jedesmal gleich sind, zb Zeit seit Systemstart in ms.
    Oder du sorgst dafür, dass etwas herausgezögert wird, oder lässt Benutzereingaben mit berechnen

    So müsste es gehen

    #include<iostream>
    #include<cmath>
    using namespace std;
    
    //liefert Zufallszahl
    int RandInt(void)
    {
        return(rand()%7);
    }
    
    int main()
    {
        int Zahl; //Herauszögern
        cout<<"Bitte eine Zahl eingeben :";
        cin>>Zahl;
        srand(time(NULL)+Zahl); //Initialisieren
    
        for(int i=0;i<10;i++) //10 Zufallszahlen ausgeben
            cout<<"Zufallszahl :"<<RandInt()<<endl;
    
        return(0);
    }
    


  • Tut mir leid ich bin noch ein ziemlicher Anfänger 😕 😕 ^^
    Könnte mir vll Jemand ein wenig "Leitung" bereitstellen.
    Brauche noch eine führende Hand 😃



  • Sry hatte die Posts noch nicht gesehen 😃

    Daaaanke an Alle.
    Die Zufallszahlen stehen.


Anmelden zum Antworten