delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2007/09/07/21:07:15

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
Date: Fri, 7 Sep 2007 21:07:08 -0400
Message-Id: <200709080107.l881789m001552@envy.delorie.com>
From: DJ Delorie <dj AT delorie DOT com>
To: djgpp AT delorie DOT com
In-reply-to: <60s3e31ouck81u9ti1njogqcoj1a5tfta3@4ax.com> (message from Brian
Inglis on Sat, 08 Sep 2007 00:45:58 GMT)
Subject: Re: random() : What am I doing wrong?
References: <OF8023CA5C DOT B777E9E3-ON8725734D DOT 00541573-8725734D DOT 00544D8B AT seagate DOT com> <200709051534 DOT l85FYdil032635 AT envy DOT delorie DOT com> <60s3e31ouck81u9ti1njogqcoj1a5tfta3 AT 4ax DOT com>
Errors-To: nobody AT delorie DOT com
X-Mailing-List: djgpp AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

> IIRC the best distributed approach is to take a sufficient number of
> bits b around the middle of the random integer, shift right to give you
> a set 0..2^b-1 and if the number is bigger than you can use, try again
> with a new random integer. 

If you use random(), it's already pulling bits out of the middle of
its state machine.

But the odds of needing to call random() twice are much lower if you
check for the 49 values from 2,147,483,600 to 2,147,483,647, and use
'%' to scale the remaining range.

- Raw text -


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