User Tools

Site Tools


chess:programming:magic_bitboards:calculate_magic_numbers

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
chess:programming:magic_bitboards:calculate_magic_numbers [2021/10/27 23:21] – [Using the Magics at Program Startup] peterchess:programming:magic_bitboards:calculate_magic_numbers [2021/10/28 00:00] (current) – [Determine Magic Numbers] peter
Line 98: Line 98:
   * **magic** is the random 64-bit number.   * **magic** is the random 64-bit number.
     * At this time this is done by trial-and-error, as no known formula to provide a perfect solution.     * At this time this is done by trial-and-error, as no known formula to provide a perfect solution.
 +      * It is just luck/probability that a number is found that happens to calculate unique indices for unique MoveBoards.
 +    * Ideally no gaps should be between each index, i.e. a perfect hash.
  
   * This should result in 64 magic rook numbers and 64 magic bishop numbers.   * This should result in 64 magic rook numbers and 64 magic bishop numbers.
 +    * The index returned by the magic formula is always an integer less than the total number of BlockerBoards.
 +
 +  * These indexes will be used to determine where to store each BlockerBoards corresponding MoveBoard within an array.
 +    * The MoveBoard are just stored at the index calculated by these pre-programmed good magics.
 +
 +  * While this example of the Rook at e4 has 1024 BlockerBoards, each of which has a corresponding MoveBoard, you may end up storing less than 1024 MoveBoards.
 +    * For two different BlockerBoards that have the same MoveBoard, the magic could calculate two different indices or it could calculate the same index for both.
 +    * As long as the MoveBoards are the same, it is okay for the index to collide. 
  
 </WRAP> </WRAP>
chess/programming/magic_bitboards/calculate_magic_numbers.1635376902.txt.gz · Last modified: 2021/10/27 23:21 by peter

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki