MonteCarloHashMapResult() {
   _emptyPoints = PointSetFactory.createPointSet();
   _wins = GoArray.createIntegers();
   _playouts = GoArray.createIntegers();
   _virtualWins = GoArray.createFloats();
   _virtualPlayouts = GoArray.createFloats();
 }
  public void setPointSet(MonteCarloPluginAdministration administration) {
    MersenneTwisterFast random = administration.RANDOM;
    _boardSize = administration.getBoardSize();

    assert (_emptyPoints.getSize() == 0);
    PointSet copy = PointSetFactory.createPointSet();
    copy.copyFrom(administration.getEmptyPoints());
    //		boolean isTestVersion = GlobalParameters.isTestVersion();
    ProbabilityMap map = administration.getProbabilityMap();
    byte colorToMove = administration.getColorToMove();
    for (int size = copy.getSize(); size > 0; size--) {
      int xy = copy.get(random.nextInt(size));
      copy.remove(xy);
      if (administration.isLegal(xy) && !administration.isVerboten(xy)) {
        _emptyPoints.add(xy);
        //				if (isTestVersion)
        //				{
        //					float weight = (float)map.getWeight(xy, colorToMove);
        //					float factor = (float)Math.log(weight);
        //					if (weight<1.0)
        //						weight = 0.0f;
        //					else
        //						weight -= 1.0f;
        //					if (factor<1)
        //						factor = 1.0f;
        //					_virtualPlayouts[xy] = weight/factor;
        //					_virtualWins[xy] = weight;
        //				}
        //				else
        {
          _virtualPlayouts[xy] = 0.0f;
          _virtualWins[xy] = 0.0f;
        }
      }
    }
    copy.recycle();
    if (administration.isGameAlmostFinished()) {
      _virtualPlayouts[GoConstant.PASS] = 0;
      _virtualWins[GoConstant.PASS] = 0;
      _emptyPoints.add(GoConstant.PASS);
    }

    for (MoveGenerator generator : administration.getExplorationMoveGeneratorList()) {
      int xy = generator.generate();
      if (xy != GoConstant.UNDEFINED_COORDINATE)
        increaseVirtualPlayouts(xy, generator.getUrgency(), generator.getUrgency());
    }
    assert (_emptyPoints.freeze());
  }