static Zobrist() { IRKiss rnd = new RKiss(DefaultRandomSeed); for (var side = EPlayer.White; side < EPlayer.PlayerNb; ++side) { for (var pieceType = EPieceType.Pawn; pieceType < EPieceType.PieceTypeNb; ++pieceType) { var piece = pieceType.MakePiece(side); for (var square = ESquare.a1; square <= ESquare.h8; square++) { ZobristPst[piece.AsInt(), (int)square] = rnd.Rand(); } } } for (var i = 0; i < ZobristCastling.Length; i++) { ZobristCastling[i] = rnd.Rand(); } for (var i = 0; i < ZobristEpFile.Length; i++) { ZobristEpFile[i] = rnd.Rand(); } ZobristSide = rnd.Rand(); ZobristNoPawn = rnd.Rand(); }
static Zobrist() { IRKiss rnd = new RKiss(DefaultRandomSeed); for (var i = 0; i < ZobristPst.Length; i++) { ZobristPst[i] = new ulong[64]; } Span <PieceTypes> Pts = stackalloc PieceTypes[] { PieceTypes.Pawn, PieceTypes.Knight, PieceTypes.Bishop, PieceTypes.Rook, PieceTypes.Queen, PieceTypes.King }; for (var side = Players.White; side < Players.PlayerNb; ++side) { foreach (var pieceType in Pts) { var piece = pieceType.MakePiece(side); for (var square = Squares.a1; square <= Squares.h8; square++) { ZobristPst[piece.AsInt()][(int)square] = rnd.Rand(); } } } for (var i = 0; i < ZobristCastling.Length; i++) { ZobristCastling[i] = rnd.Rand(); } for (var i = 0; i < ZobristEpFile.Length; i++) { ZobristEpFile[i] = rnd.Rand(); } ZobristSide = rnd.Rand(); ZobristNoPawn = rnd.Rand(); }