Author: Ricardo Gibert
Date: 16:44:01 02/09/01
Go up one level in this thread
On February 09, 2001 at 10:39:09, Pat King wrote:
>On February 07, 2001 at 10:59:31, Pat King wrote:
>
>>I have seen it written here that with 64 bit Zobrist hashing, the perfect key
>>should change 32 bits. When I had what I thought to be hashing problems, I
>>captured some stats on my hash keys. I found that most of them changed 28-36
>>bits (within 4) with a few outliers as far as 13 bits from "perfection". I also
>>checked that I was not generating duplicate keys. How good or bad is this?
>>Should I work on the average, or the outliers? Any comments appreciated :)
>>
>>Pat
>Thanks to all for your thoughtful replies. For what it's worth, the only change
>I've made is to generate a key set with hamming distance 31-33, with a
>significant improvement in hash performance (thanks to Ricardo for providing a
>reasonable argument to justify the 32 bit standard). I have yet to compare this
>set with Rob's 16 bit criteria for XORing any 2 keys.
>
>Pat
31-33 is too narrow a range and suggests a bug to me. The following is the
algorithm I use:
int main(void)
{
int i, j, c;
hash64 a[DIM];
seed_rnd64();
a[0] = 0; // to exclude zero and near zero numbers.
for (i = 1; i < DIM; i++)
{
a[i] = rnd64();
j = 0;
while (j < i)
{
c = count(a[i]^a[j]);
if (c < 22 || c > 42)
{
a[i] = rnd64();
j = 0; // don't forget to do this!
}
else
{
j++;
}
}
printf("%4i ", i);
}
return 0;
}
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.