def get_possible_nxt_prms(self, params=None):
        if params is None:
            params = self.get_all_params()

        count = 0
        nxt_prms = {}
        for wk_r, wk_c, wr_r, wr_c, bk_r, bk_c,white_plays in params:

            board = ChessBoard(wk=King(wk_r, wk_c, Piece.WHITE),
                               wr=Rook(wr_r, wr_c, Piece.WHITE),
                               bk=King(bk_r, bk_c, Piece.BLACK),
                               white_plays=white_plays)
            if not board.valid:
                continue

            nxt_pos = {}
            for nxt_moves in board.get_possible_moves():
                q = 0
                if nxt_moves.state == ChessBoard.BLACK_KING_CHECKMATE:
                    q = 100
                elif nxt_moves.state == ChessBoard.DRAW:
                    q = -100
                nxt_pos[nxt_moves.board_id()] = q

            nxt_prms[(wk_r,wk_c,wr_r,wr_c,bk_r,bk_c,white_plays)] = nxt_pos

            count += 1
            if count % 1000 == 0:
                print (count)

        return nxt_prms
 def learn(self, iterations):
     for i in range(0, iterations):
         board = ChessBoard.get_random_chessboard()
         self.parameter_set.calculate_parameters(board)
         rank = self.parameter_set.learning_move()
         if self.parameter_set.rank_higher(self.knowledge, rank):
             self.knowledge = self.parameter_set.update_knowledge(self.knowledge)



if __name__ == '__main__':
    
    draw = 0
    win = 0
    total = 1000.0
    lit = []
    for t in range(0,10):

        draw = 0
        win = 0
        for i in range(0,int(total)):
            board = ChessBoard.get_random_chessboard()
            if i % 1000 == 0:
                print i
            if play_random(board) is  ChessBoard.DRAW:
                draw += 1
            else:
                win += 1

        lit.append((win,draw))


    print lit
    print np.mean(np.array(lit))
    print np.std(np.array(lit))