public int GetPosition(BoardState board)
 {
     return rand.Next(0, nColors);
 }
 public int GetPosition(BoardState board)
 {
     return rand.Next(0, board.BoardColors.Count()+1);
 }
 public abstract int GetColor(BoardState board);
 public override int GetColor(BoardState board)
 {
     return rand.Next(0, this.NColors);
 }
 public override int GetColor(BoardState board)
 {
     var input = new BasicMLData(board.BoardColors.Select(i => (double)i).Concat(new double[Network.InputCount - board.BoardColors.Count()]).ToArray<double>());
     var color = Network.Winner(input);
     return color;
 }