Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: How to create a set of random integers for hashing?

Author: Robert Hyatt

Date: 10:49:48 10/18/98

Go up one level in this thread


On October 18, 1998 at 09:55:59, Amir Ban wrote:

>On October 18, 1998 at 09:36:52, Robert Hyatt wrote:
>
>>On October 18, 1998 at 07:41:29, Amir Ban wrote:
>>
>>>On October 18, 1998 at 05:46:50, Ed Schröder wrote:
>>>
>>>>Since ages I use the following formula for creating a set of random
>>>>integers for hashing at program start:
>>>>
>>>>#define LENGTH 64*12
>>>>
>>>>int random [LENGTH];
>>>>
>>>>int a,b,c,d,x;
>>>>
>>>>srand(9);                    // initialize prime number
>>>>
>>>>for (x=0; x<LENGTGH; x++)
>>>> { a=rand(); b=rand(); if (b & 1) a=a | 0x8000;
>>>>   c=rand(); d=rand(); if (d & 1) c=c | 0x8000;
>>>>   random[x]=(a<<16)+c;
>>>> }
>>>>
>>>>I wonder how good such a system is and how others do it.
>>>>
>>>>- Ed -
>>>
>>>From the definition of LENGTH I guess these are piece-square tables you are
>>>generating.
>>>
>>>I do the same, but I generate 48-bit numbers (actually only 45-bit, because I
>>>don't bother completing the MSbit), not 32-bit as you do. I think it's generally
>>>acknowledged that 32-bit is not enough ?
>>>
>>>Amir
>>
>>
>>He is actually using more than 32 bits.  We had a long discussion about
>>this last year, where he is storing the move that produced this position
>>(the move that takes him from the parent position to the current position
>>in addition to the best move from this position).  This is another way of
>>adding bits (in his case I'd say the effect is like an extra 8-12 bits of
>>hash signature...)
>
>???
>
>If you treat the move that produced the position as part of the key, then you
>will not recognize transpositions.
>
>Amir


Not as part of the key...  I think he matches the normal 32 bit key, but then
confirms that the move that came from the parent could be a move before *this*
position as well.  IE if we get a hash match at ply=10, we hope we have a best
move to play at ply=10 from the hash table.  Ed (I think I am right, Ed can
comment) stores the move played at ply=9 to get to ply=10, to be sure that
this move was played somewhere in the path.  If not, it is treated as an
error...

I like the 64 bit hash signature myself, particularly since 64 bit machines
do this for free...



This page took 0 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.