From owner-freebsd-questions Sat Nov 18 10:44:54 1995 Return-Path: owner-questions Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id KAA11847 for questions-outgoing; Sat, 18 Nov 1995 10:44:54 -0800 Received: from mramirez.sy.yale.edu (mramirez.sy.yale.edu [130.132.57.207]) by freefall.freebsd.org (8.6.12/8.6.6) with ESMTP id KAA11837 for ; Sat, 18 Nov 1995 10:44:48 -0800 Received: (from mrami@localhost) by mramirez.sy.yale.edu (8.6.12/8.6.9) id NAA24026; Sat, 18 Nov 1995 13:44:44 -0500 Date: Sat, 18 Nov 1995 13:44:41 -0500 (EST) From: Marc Ramirez Reply-To: mrami@minerva.cis.yale.edu To: Frank Volf cc: freebsd-questions@freebsd.org Subject: Re: What's wrong with this code??? In-Reply-To: <199511191351.OAA04737@oasis.IAEhv.nl> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-questions@freebsd.org Precedence: bulk On Sun, 19 Nov 1995, Frank Volf wrote: > To my surprise the range of numbers generated is not random at all between > multiple invocations of the program. In fact the random generator seems > to start again after 16 invocations (with 1 second delay between them > so t has incremented): Well, I don't have the source code handy, but apparently... Given R(s)= {initstate(s); return random();}, R(s) = R(s+2^(n+1)) (mod 2^n) R(s) = (0x23fe0e9a)s + 0x1a679542 (mod 2^n) This is just from playing around; I don't know about moduli that aren't powers of 2. My advice therefore would be to take higher bits since they will have a greater period (e.g., (random()/65536)%8).