public final GameTreeNode select(Random random) {
			GameTreeNode node = root;
			int me = root.board.currentPlayer;
			
			while(node.children.size() > 0) {
				if(random.nextDouble() < 0.1)
					break;
				
				if(node.board.currentPlayer == me) { // choose the most promising node for me
					node = node.children.stream().max((a,b) -> a.getScore() - b.getScore()).get();
				}
				else { // Choose the most promising node for the other player
					node = node.children.stream().min((a,b) -> a.getScore() - b.getScore()).get();
				}
			}
			
			return node;
		}