Assumming good_quality_int_rand() ranges [0..15] and N is 9, the
mapping is 0->0, 1->1, ..., 8->8, 9->0, ..., 15->6.  This shows 0 to 6
have twice of the chance of 7 and 8.  This is the bias caused by
the modulo operation.

In addition,
>multiplication + rounding.
may return N.  Use trancate instead for the range [0..N).
#I used float instead of double and also got N (very rare). Please be
careful.

-Hideki

Gunnar Farnebäck: <[EMAIL PROTECTED]>:
>Hideki Kato wrote:
>> Gunnar Farnebäck: <[EMAIL PROTECTED]>:
>>> Hideki Kato wrote:
>>>> I didn't against you, Álvaro, rather I just made a caution for
>>>> programmers who will use your pseudo code as is. :)
>>>>
>>>> First, I prefer SFMT (SIMD-oriented Fast Mersenne Twister) rather
>>>> than integer pseudo random number generators in practice where the
>>>> quality of play-out is important.  Modern processors execute floating
>>>> operations as fast as interger ones and
>>>>    picked = mt_rand() * (double) num_candidates;
>>>> is the simplest and safe.
>>> Please note that for uniformity purists this method has exactly the
>>> same problem as good_quality_int_rand() % num_candidates.
>> 
>> Mt_rand() has very good uniform distributions in [0..1)
>> while
>> good_quality_int_rand() % num_candidates
>> doesn't disribute uniformly when num_candidates is not a power of 2, 
>> assuming good_quality_int_rand() ranges [0..2^32 or so) due to modulo 
>> operations.  They are not the same, aren't they?
>
>Well, there's nothing magic about floating point numbers. Even a very 
>good uniform distribution in some interval is implemented by 
>distributing N discrete values over the interval as uniformly as 
>possible. When those N values by some mapping procedure are transformed 
>into a smaller range M, some of those will get at least one more hit 
>than some others, unless M divides N. It doesn't matter whether the 
>mapping procedure is an integer modulo operation or a floating point 
>multiplication + rounding.
>
>/Gunnar
>_______________________________________________
>computer-go mailing list
>computer-go@computer-go.org
>http://www.computer-go.org/mailman/listinfo/computer-go/
--
[EMAIL PROTECTED] (Kato)
_______________________________________________
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to