For one program I am developing I need a large Zobrist hashing table (2^20 elements).
The problem I face is all the examples I can find assume smaller tables:
Chess 13 values * 64 positions = 832 elements.
Go = 3 values * 361 positions = 1083 elements.
But my program is not a game and needs to use 256 values * 4096 array = 1048576 elements.
The problem in filling the table is that most schemes just pick random values for the elements. Using 32 bit values there is very little chance of bad elements being chosen in the above examples. But I will be generating 2^20 elements and I have my doubts about conflicting values being used.
So far I have two rules to follow when I fill the table.
1) No element in the hash table can have the value of zero.
2) No element value can exist in more than one entry in the hash table.
Can anyone tell me if there is any other rules I need to follow?