December 29, 2010
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
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.