Peter Blancke wrote:
Guten Tag!
Folgendes Problem plagt mich unter Linux (und ich meinte, es frueher mal unter DOS nicht gehabt zu haben): Ein Programm _muss_ eine exakt zehnstellige Zufallszahl ausgeben.
Dazu schrieb ich mit meinen bescheidenen C-Kenntnissen[1] folgende Zeilen:
#include
#include #include void main (void) { int i; int j;
srand((unsigned)time((time_t*)0));
for (j=0; j<10; j++) /* [2] */ { i=1+(int) (9.0*rand()/(RAND_MAX+1.0)); printf ("%i", i); } printf ("\n"); }
Das Problem ist aber, dass sich die erzeugten Zufallszahlen nur im Sekundentakt aendern. Ich habe es nicht geschafft, den Nanosekundenwert aus time.h zu benutzen.
Wird das Programm also mit Abstaenden von mehr als einer Sekunde aufgerufen, ist die Sache ok. Dummerweise wird das Programm aber bis zu 6 mal in einer Sekunde aufgerufen.
Weiss mir da jemand einen Rat?
Gruss
Peter Blancke
Hallo Peter, mit den nanos und micros kann ich Dir im Moment nicht helfen, aber vielleicht addierst Du den pid und ev. die cpuclock mit drauf: srand((unsigned)time((time_t*)0)+getpid()); srand((unsigned)time((time_t*)0)+getpid()+clock()); andy -- ------------------------------- mailto:Andreas.Tirok@beusen.de fon: +49 30 549932-37 fax: +49 30 549932-21 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com