ich habe in der FAQ gelesen und dabei die Funktion von Zufallszahlen gesehen. Die habe ich nun so abgeändert:
Code:
...
#include <time.h>
...
int zufallszahlengenerator (int von, int bis, int zahl) { srand(time(NULL)); zahl=von+rand()%(bis-von+1); return zahl; }
Wenn ich dann die Funktion aufrufe, bekomme ich immer die gleiche Zufallszahl heraus. Mach ich irgendetwas falsch???? Ich hoffe ihr könnt mir helfen!!!
x(n+1) = (a*x(n)+b)%c wobei a b und c schlau gewählte konstanten sind...
mit srand setzt du den startwert.. du "impfst" also deinen zufallsgenerator... meist nimmt man dafür die zeit.
wenn du immer mit dem selber startwert startest kommt natürlich auch immer die gleich zahl raus weil ja nur errechnet ist... sinnvoll arbeiten kannst du damit also nur in dem du das programm nicht ständig neu anschmeisst sondern innerhalb des programmes mehrmals rand aufrufst...
C++:
int zufallszahlengenerator (int von, int bis){ // srand(time(NULL)); //das musst du rausschmeissen der wird nur einmal bei programmstart gesetzt (geimpft) return von+rand()%(bis-von+1); }
int main(){ srand(time(NULL)); //seed setzen for(int i=0;i<10;++i)printf("%d\n",zufallszahlengenerator(10,20)); }
Hast du doch. Die Funktion zufallsgenerator gibt dir den wert fuer die Variable zurueck -- All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
außerdem möchte gerne nur eine zufallszahl haben und nicht 10 so wie in deinem Beispiel!!!
*lol* ich will kühe...
wenn du nur eine zufallszahl haben willst musst du rand ja auch nur einmal aufrufen dann bekommst du doch genau eine...
was genau willst du denn machen mit so wenig informationen ist es schwer dir zu helfen... eines solltest du dir klar machen es gibt auf dem rechner keinen echten zufall der wird nur simuliert... -- ...fleißig wie zwei Weißbrote
ja er gibt nur eine zahl zurück aber durch die for-schleife werden 10 zufallszahlen ausgegeben und ich dachte das würde mit dazu gehören damit alles funktioniert. Habe ich mich wohl geirrt. SORRY