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 > |