View mode: basic / threaded / horizontal-split · Log in · Help
December 29, 2010
Empire D code question
I see code like this:

 if (ranq() & 8) ...

where ranq() is defined as

 uint ranq() { return std.random.rand(); }

Would that be a coin toss, and similar to , e.g. (ranq() & 1)?

Thanks

Clay
January 04, 2011
Re: Empire D code question
On 29/12/2010 22:41, Clay Bridges wrote:
> I see code like this:
>
>    if (ranq()&  8) ...
>
> where ranq() is defined as
>
>    uint ranq() { return std.random.rand(); }

Good question - why is this wrapper there?

> Would that be a coin toss, and similar to , e.g. (ranq()&  1)?

Yes.  Since 8 has only one set bit, there are only two possible values - 
0 and 8.

I don't know why 8 was chosen.  I just searched the code and found 
instances of:

    ranq() & 1  (1/2 chance)
    ranq() & 4  (1/2 chance)
    ranq() & 8  (1/2 chance)
    ranq() & 7  (1/8 chance)
    ranq() & 15 (1/16 chance)

Stewart.
Top | Discussion index | About this forum | D home