Mailinglist Archive: opensuse-de (3878 mails)

< Previous Next >
Re: C-Problem mit rand()
  • From: Andreas.Tirok@xxxxxxxxx (Andreas Tirok)
  • Date: Fri Dec 22 11:26:14 2000
  • Message-id: <3A433A56.CE76BDF3@xxxxxxxxx>



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 <stdio.h>
> #include <stdlib.h>
> #include <time.h>
> 
> 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@xxxxxxxxx
fon: +49 30 549932-37
fax: +49 30 549932-21

---------------------------------------------------------------------
To unsubscribe, e-mail: suse-linux-unsubscribe@xxxxxxxx
For additional commands, e-mail: suse-linux-help@xxxxxxxx


< Previous Next >
Follow Ups
References