code: def weighted_choice(self, board: Union[chess.Board, int], *, exclude_moves: Container[chess.Move] = (), random=random) -> Entry:
          
          total_weights = sum(entry.weight for entry in self.find_all(board, exclude_moves=exclude_moves))
          if not total_weights:
              raise IndexError()
  
          choice = random.randint(0, total_weights - 1)
  
          current_sum = 0
          for entry in self.find_all(board, exclude_moves=exclude_moves):
              current_sum += entry.weight
              if current_sum > choice:
                  return entry
  
          assert False
docs: Selects a random entry for the given position, distributed by the
          weights of the entries.
  
          :raises: :exc:`IndexError` if no entries are found.