Zobrist Hash

出自ProgWiki
跳至導覽 跳至搜尋

Zobrist Hash(左賓氏雜湊),參照:『維基百科~Zobrist_hashing

  • 別名:Zobrist hashing、Zobrist keys、Zobrist signatures
  • 常用於棋盤類遊戲的AI

特性

基本型

//64bits亂數產生器
UINT64 rand64(void)
{
    return rand() ^ ((UINT64)rand() << 15) ^ ((UINT64)rand() << 30) ^ ((UINT64)rand() << 45) ^ ((UINT64)rand() << 60);
}
 
//posMax = 棋盤size
//pieceMax = 棋子總數
//colorMax = 棋盤格子的顏色總數
UINT64 ZobristTable[posMax][pieceMax][colorMax];
 
void InitializeZobristTable()
{
    for(int x = 0; x < posMax; x++)
    {
        for(int y = 0; y < pieceMax; y++)
        {
            for(int z = 0; z < colorMax; z++)
            {
                ZobristTable[x][y][z] = rand64();
            }
        }
    }
}
 
UINT64 ZobristKey;
ZobristKey ^= ZobristTable[pos][piece][color];