Article View: fr.comp.os.msdos
Article #82Re: un generateur de nombre aleatoire sous DOS
From: Eric Lévénez
Date: Thu, 21 Jul 2005 16:14
Date: Thu, 21 Jul 2005 16:14
49 lines
2878 bytes
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-mailReferences:
<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