[computer-go] compiling orego on m$'s vc++ 2005 express-nostdint.h

Rémi Coulom Remi.Coulom at univ-lille3.fr
Thu Aug 17 03:48:51 PDT 2006


compgo at schraudolph.org wrote:
>> But with a 31 bit random number generator (which I
>> think most standard libraries use) you will need 3 shifts.
> 
> Somehow I'm missing the point of this increasingly esoteric discussion...
> 
> 1) I cannot conceive of a single reason why a Go program would require 
> 64-bit (as opposed to 62-bit) random numbers. A 62-bit Zobrist hash will 
> work just fine with the odd non-random zero bit in the middle, as long 
> as you don't have that bit in your address space. I doubt anyone here 
> uses a hash table with more than 2^31 entries, or does more than 2^31 
> Monte Carlo rollouts, etc.

The Zobrist hash code is not used for addressing only. In case of 
collision (two positions mapping to the same address), the full hash 
code is used for disambiguation. The whole board is not stored in the 
table, only its hash code. There is always a non-zero risk of making a 
mistake. The more bits in the hash code, the lower the probability of 
making a mistake.

> 
> 2) At least for Zobrist hashing, the efficiency of the RNG is immaterial 
> since the random seed values are generated only once and stored in a 
> table. So if you're obsessed with having 64-bit random values, shift and 
> mask to your heart's content.
> 
> Or am I missing something here?

The speed of the random number generator does not matter when generating 
hash codes. In Monte Carlo programs, random numbers are also used to 
select moves. Speed matters there.

> 
> Regards,
> 
> - nic
> 
> _______________________________________________
> computer-go mailing list
> computer-go at computer-go.org
> http://www.computer-go.org/mailman/listinfo/computer-go/



More information about the computer-go mailing list