Zufallszahl zwischen 0 und 1



  • Hallo zusammen!

    Ich brauch für ein Programm zur Berechnung von Integralen eine Funktion die mir Zufallszahlen zwischen bestimmten Werten wie z.B. 0 und 1 ausgibt. Irgendwie bekomm ich das aber nicht so ganz hin. Kann mir hier vielleicht mal jemand auf die Sprünge helfen?

    double zufallszahl(int a, int e){
    	double r=e-a+1;
    	return double a + (int)(r * rand()/(RAND_MAX+1.0));
    }
    
    void main(){
    	for (int i=1;i<10;i++){
    	printf("Zahl %i: %d\n",i,zufallszahl(0,1));
    	}
    	system("pause");
    }
    

    Beim Debug bekomme ich die Fehlermeldung das in der Zeile mit der Return Funktion der Datentyp Double unerwartet ist!

    Wäre super wenn mir jemand bei der Zufallsfunktion helfen könnte!

    Danke im Voraus!

    Gruß
    Andreas


  • Mod

    Da ist ehrlich gesagt zu vieles falsch um das noch zu retten. Hier ich geb dir was, aber versprich mir, dass du dein C Lehrwerk nochmal von Seite 1 an liest, aber dieses mal gründlich!

    double zufallszahl(double untere_grenze, double obere_grenze)
    {
     return ((double) rand()/ RAND_MAX)*(obere_grenze-untere_grenze) + untere_grenze;
    }
    


  • Also damit wirft mir mein Rechner beim debugen zwar keinen Fehler mehr aus, aber die Zahlen die ich dann aus der for-Schleife raus angezeigt bekommen liegen alles andere als zwischen 0 und 1. Da gehts von -1452715309 bis hoch zu 2086860998.



  • Wie rufst du denn die Funktion auf?

    MfG SideWinder



  • Der Fuktionsaufruf ist oben im Code mit drin!

    zufallszahl(0,1)

    Gruß
    Andreas


  • Mod

    Du gibst einen Integer aus. Die Funktion liefert einen double.



  • Verflixt! Ich weiß nicht wie oft ich das schon falsch gemacht hab! Immer wieder setz ich das %d für double Variabeln ein! Na d=double! Hab jetzt %f eingesetzt und es funktioniert!

    Danke


  • Mod

    Ich mache das zwar auch öfters wenn ich mal C programmiere, aber mein Compiler warnt mich gewöhnlicherweise bei solchen Fehlern. Vielleicht solltest du mal die Warnstufen deines Compilers hochsetzen oder dich nach etwas anderem umsehen.


Anmelden zum Antworten