🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.os.msdos
Article #82

Re: un generateur de nombre aleatoire sous DOS

#82
From: Eric Lévénez
Date: Thu, 21 Jul 2005 16:14
49 lines
2878 bytes
Le 21/07/05 10:49, dans <42df5f16$0$22531$636a15ce@news.free.fr>, ��AG��
<ag@tb.fr> a �crit�:

> #include <stdio.h>
> #include <stdlib.h>
> #include <time.h>
> 
> 
> int main(int argc, char * argv[])
> {
>          int a = atoi(argv[1]);
>          int b = atoi(argv[2]);

Les 2 lignes du dessus peuvent planter si argc n'est pas >= 3. Sans argument
il y a des chances que argv[1] soit � NULL, et donc le atoi va partir dans
les choux.

>          int c = a>b ? a:b;
>          int d = a<b ? a:b;
> 
>          if(argc!=3) printf("usage : hazard.exe n1 n2");

L� argc est test�, mais trop tard car on a d�j� planter le programme voire
la machine. De plus m�me si les param�tres sont mauvais ont continue, ce qui
n'est pas bien. En enfin il n'y a pas de \n, et le message peut ne pas �tre
affich� sur la console (en fait il le sera car on a un printf plus loin dans
le code avec le \n final.

>          srand(time(NULL));

C'est bien le time(), mais h�las avec les machines actuelles on peut lancer
des milliers de fois un programme dans la m�me seconde et donc time a des
chances d'�tre identique � chaque fois. Le g�n�rateur de nombre donnera
toujours la m�me s�quence si on s'en sert pour par exemple emplir un fichier
de nombres. Il faudrait introduire une notion de num�ro de processus (�a
existe sous DOS ?) dans le calcul.

>          printf("%d\n",(int)(((double)rand())/RAND_MAX*(c-d)+0.5)+d);

Un truc �tonnant avec mon GCC 4 est que la ligne du dessus retourne toujours
la m�me valeur. Par contre si juste apr�s la ligne srand  je rajoute un
appel a un rand(), le printf marche bien. L� je ne comprends pas.

>          return 0;
> }

-- 
�ric L�v�nez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Technical Details
Message-ID: <BF059696.3C9D6%eric@levenez.com>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!proxad.net!193.252.118.146.MISMATCH!news.wanadoo.fr!news.wanadoo.fr!not-for-mail
References: <dbmgem$2378$1@talisker.lacave.net> <42df5f16$0$22531$636a15ce@news.free.fr>

Show Full Headers
Complete Article Headers
X-Google-Thread: 10f688,1b9cd5f314610f29
X-Google-Thread: f9822,1b9cd5f314610f29
X-Google-Attributes: gid10f688,gidf9822,public
X-Google-Language: FRENCH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!proxad.net!193.252.118.146.MISMATCH!news.wanadoo.fr!news.wanadoo.fr!not-for-mail
User-Agent: Microsoft-Entourage/11.1.0.040913
Date: Thu, 21 Jul 2005 18:14:46 +0200
Subject: Re: un generateur de nombre aleatoire sous DOS
From: Eric Lévénez 
 <eric@levenez.com>
Newsgroups: fr.comp.os.msdos,fr.comp.lang.c
Message-ID: <BF059696.3C9D6%eric@levenez.com>
References: <dbmgem$2378$1@talisker.lacave.net> <42df5f16$0$22531$636a15ce@news.free.fr>
Mime-version: 1.0
Content-type: text/plain;
 charset="ISO-8859-1"
Content-transfer-encoding: 8bit
Lines: 50
Organization: les newsgroups par Wanadoo
NNTP-Posting-Date: 21 Jul 2005 18:14:47 CEST
NNTP-Posting-Host: 82.120.12.155
X-Trace: 1121962487 news.wanadoo.fr 1242 82.120.12.155:49211
X-Complaints-To: abuse@wanadoo.fr