Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: zobrist key table questions

Author: Uri Blass

Date: 07:47:17 05/30/04

Go up one level in this thread


On May 30, 2004 at 10:40:39, Uri Blass wrote:

>On May 30, 2004 at 09:56:39, Tom Likens wrote:
>
>>On May 30, 2004 at 06:44:55, Uri Blass wrote:
>>
>>>I have the following function to initialize my random numbers
>>>
>>>typedef unsigned __int64 BitBoard;
>>>
>>>BitBoard rand64()
>>>{
>>>  __int64 r = rand();
>>>  r ^= (__int64)rand() << 15;
>>>  r ^= (__int64)rand() << 30;
>>>  r ^= (__int64)rand() << 45;
>>>  r ^= (__int64)rand() << 60;
>>>  return r;
>>>}
>>>
>>>void initializezobarray()
>>>{
>>>	//starting zobrist keys
>>>	char zobnum[128];
>>>	int fil,i,j;
>>>	srand(0);
>>>	for (fil=0;fil<6;fil++)
>>>		for (i=0;i<2;i++)
>>>			for (j=0;j<64;j++)
>>>				zobrist[fil][i][j]=rand64();
>>>
>>>
>>>}
>>>
>>>My first question is if I can be sure that I will get the same random numbers in
>>>every computer(I get the same in my computer but if I do not get the same in
>>>every computer than I may consider to rewrite it because I plan to use hash keys
>>>for my book and I do not want to have a problem that the program will not be
>>>able to use my book in another computer).
>>>
>>>I also see that Crafty is using a table of random numbers from a book and does
>>>not trust rand()
>>>
>>>My second question is if there is an advantage in doing it.
>>>
>>>Uri
>>
>>Hey Uri,
>>
>>The big advantage I've found from maintaining an internal table of random
>>numbers is that I don't have to worry about the opening book (and now
>>position and book learning) not working from compiler to compiler or even
>>OS to OS.  The program is able to read its opening book regardless if I'm
>>running a Linux version, Windows version etc.  It's just one less thing
>>to worry about, which is always nice.
>>
>>And of course, if you want to start playing with the Hamming distance
>>it's easy.  Of course, there is no real consensus (as far as I can tell)
>>on wheter numbers with a larger Hamming distance are better or not- so,
>>as always you should experiment and see what works best for movei.
>>
>>regards,
>>--tom
>
>I think to add a file so people will be able to change this random number but I
>have now a second question how to get btboard from 2 32 bits integers correctly.
>
>
>I have the following code when everything is unsigned.
>
>r1,r2 32 bits integers when r and zobrist[] 64 bit integers.
>
>r1=(unsigned)zobrist[fil][i][j]&4294967295;
>r2=(unsigned)zobrist[fil][i][j]>>32;
>r=r1 | (BitBoard) (r2<<32);
>
>
>I do not understand why
>
>r!=zobrist[fil][i][j]
>
>4294957295 is exactly 2^32-1
>
>r>>32 is sometimes 0 and sometimes 4294967295
>
>Uri

I changed to the code in crafty but it does not help much.

r=r1 | (BitBoard) r2<<32

r>>32 is still sometimes  4294967295

Uri



This page took 0.01 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.