Date: Tue, 28 Jan 1997 21:34:57 -0200 Message-Id: <1.5.4.16.19970128185422.28df1612@dmeasc.rc.ipt.br> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable To: Nils-Erik =?iso-8859-1?Q?Svang=E5rd?= <"nisse"@[194.22.170.29]>, djgpp AT delorie DOT com From: Cesar Scarpini Rabak Subject: Re: Random numbers At 08:16 28/01/97 -0800, Nils-Erik Svang=E5rd wrote: >I resently downloaded DJGPP and was thrilled. >But I have some questions. >*How do I get the random numbers within my own limit? > I currently use this code: >=09 > while(1) > { > tt=3Drandom(); > tt=3Dtt/10000000; > if(tt<320)break; > } > List[loop]=3Dtt; > > Nice? no I dont think so, there must several other ways to get by=20 > this, or some command that I've missed. (random produces a random=20 > number between 0....MAXINT, I hope that the answer wont be to go=09 > change in the *.h file. > >*Why are my compiled files so large? > I've compiled a nice "little" starfield I've been working on. > To my suprise the *.exe file was over 1.8Mb, bad news if you have=20 > a small hardrive. Can you decrease that value? > >*When I use delay(10); a warning message appears, it says error in=20 >declaration int delay(...); but it's void delay(); in the help files. > > >It would be nice if someone could help me. >/nisse > > This comes from the C Language=20 13.16: How can I get random integers in a certain range? A:The obvious way, =20 rand() % N /* POOR */ =20 (which tries to return numbers from 0 to N-1) is poor, because the low-order bits of many random number generators are distressingly *non*-random. (See question 13.18.) A better method is something like =20 (int)((double)rand() / ((double)RAND_MAX + 1) * N) =20 If you're worried about using floating point, you could use =20 rand() / (RAND_MAX / N + 1) =20 Both methods obviously require knowing RAND_MAX (which ANSI #defines in ), and assume that N is much less than RAND_MAX. =20 (Note, by the way, that RAND_MAX is a *constant* telling you what the fixed range of the C library rand() function is. You cannot set RAND_MAX to some other value, and there is no way of requesting that rand() return numbers in some other range.) =20 If you're starting with a random number generator which returns floating-point values between 0 and 1, all you have to do to get integers from 0 to N-1 is multiply the output of that generator by N. =20 References: K&R2 Sec. 7.8.7 p. 168; PCS Sec. 11 p. 172. More info on this FAQ may found in this URL http://www.eskimo.com/~scs/C-faq/top.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Cesar Scarpini Rabak E-mail: csrabak AT ipt DOT br DME/ASC Phone: 55-11-268-3522 Ext.350 IPT - Instituto de Pesquisas Tecnologicas Fax: 55-11-268-5996 Av. Prof. Almeida Prado, 532. Sao Paulo - SP 05508-901 BRAZIL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~