mal wieder jemand mit einer frage zu rand()



  • und zwar möchte ich eine zufallszahl generieren lassen und per printf ausgeben.

    hier mein code:

    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main()
    {
    	int z;
    	int i;
    	srand(1);
    	z = rand();
    
    	for(i = 1; i <= 50; ++i)
    
    		printf("Zufallszahl: %i \n",z ,i);
    
    	getchar();
    	return 0;
    }
    

    leider liefert das programm mir immer die gleiche zahl. ich kann einfach keinen fehler entdecken, sieht für mich plausibel aus.
    vielleicht kann mir jemand einen tipp geben... 😕



  • srand(time(0));
    

    srand = seed random, oder so...
    Damit setzt du den Ursprung der Pseudozufallszahlen fest. Ist dieser immer eins sind die Zufallszahlen auch immer gleich. Die aktuelle Zeit kann als Pseudo-Zufallswert einigermaßen gut herhalten.

    Gruß
    Don06



  • okay das ist schonmal ein guter hinweis.

    nun habe ich folgendes verhalten:

    beim starten des programm wird jedesmal eine andere zahl generiert, allerdings wird 50x die gleiche zahl angezeigt.
    ich wollte eigentlich mit der schleife bewirken, dass mir 50 verschiedenen zufallszahlen untereinander ausgegeben werden.

    vielleicht dafür noch einen hinweis ?



  • Ruf halt rand in der Schleife auf und nicht nur einmal am Anfang.



  • auf die idee bin ich auch schon gekommen, wenn ich allerdings rand() in die schleife setze, gibt er mir nur noch 1 zufallszahl aus, obwohl die schleife 50 ausgeben sollte.

    sobald ich rand() aus der schleife nehme, läuft die schleife auch wieder durch...



  • Hi,
    du musst um die Anweisungen der Schleife einen Block bauen mit {...}.

    mfg exnase



  • HAMMER, das war der fehler. hätte nicht gedacht das ich { da auch noch einbringen muss, schliesslich funktionieren ja die anderen anweisungen in der schleife.

    aber super, vielen dank dafür



  • {} brauchst du, wenn du mehr als eine Anweisung in einer Schleife/If-Anweisung ausführen willst.



  • spitze, das war mal das lehrreichste was ich seit 2 wochen (trotz uni) gelernt habe 😉

    vielen dank!


Anmelden zum Antworten