delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/01/27/23:17:09

From: "John M. Aldrich" <fighteer AT cs DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Random implementation
Date: Tue, 27 Jan 1998 23:06:58 -0500
Organization: Two pounds of chaos and a pinch of salt.
Lines: 39
Message-ID: <34CEAEE2.2DCF@cs.com>
References: <6am4ri$dtk$2 AT herald DOT Mines DOT EDU>
NNTP-Posting-Host: ppp230.cs.com
Mime-Version: 1.0
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

Jean-Luc Romano wrote:
> 
> My question should be simple enough:
> 
> What is the best way to implement random numbers?

Easiest:  Use the library code provided for you by the compiler.

Best:  Implement a custom random number generator from a work like
Knuth.

> I could use rand() by seeding the srand(seed) function,
> but if my seed is always the same, the same random numbers
> will be generated.

Of course.  That's why you use a unique value like the system clock.

> I could seed the function with time(NULL) like so:  srand(time(NULL));
> but (I think) that seeds the generator based on the system seconds,
> so one out of every 60 runs will produce the same random numbers.

time_t is defined by the library code as an unsigned integer,
representing the number of seconds elapsed since 00:00:00 1/1/1970. 
Since srand() and its counterpart srandom() take integer arguments, no
two values returned by time() will be identical until the year 2106
(2^32 / 365 * 24 * 60 * 60 + 1970).  I think that's random enough.

P.S.:  To be absolutely precise, the period of time_t is 136 years, 70
days, 6 hours, 28 minutes, and 15 seconds.  This doesn't translate
perfectly into the calendar because of leap years, and I'm not going to
try to figure it out.  :-)

-- 
---------------------------------------------------------------------
|      John M. Aldrich       | "To be 'matter of fact' about the    |
|       aka Fighteer I       | world is to blunder into fantasy--   |
|   mailto:fighteer AT cs DOT com   | and dull fantasy at that, as the real|
| http://www.cs.com/fighteer | world is strange and wonderful." -LL |
---------------------------------------------------------------------

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019