public NearestNeighbour drawNeighbourNoReplacement()
    {
	Random r = new Random();
	//System.out.println("Draw no replacement ()");
	//System.out.println("+:"+this.posCounter +" -:"+this.negCounter +" unknown:" +this.unknownCounter);
	
	int min= 1 , max = this.posCounter+ this.negCounter + this.unknownCounter;
	//System.out.println("min:"+min +" max:"+max);

	// nextInt is normally exclusive of the top value,
	// so add 1 to make it inclusive
	int randomNum = r.nextInt(max - min + 1) + min;
	//System.out.println("Random:"+randomNum);

	// if the random number is in the range of the positives
	// then assign a positive class
	if (randomNum >= 1 && randomNum <= this.posCounter)
	{
	    this.posCounter--;
	    NearestNeighbour nn = new NearestNeighbour();
	    nn.incrementPositives();
	    nn.setDistance(this.distance);
	    return nn;
	}
	else if (randomNum >= this.posCounter+1 && randomNum <= this.posCounter+negCounter)// assign a negative classification.
	{
	    this.negCounter--;
	    NearestNeighbour nn = new NearestNeighbour();
	    nn.incrementNegatives();
	    nn.setDistance(this.distance);
	    return nn;
	}
	else
	{
	    this.unknownCounter--;
	    NearestNeighbour nn = new NearestNeighbour();
	    nn.incrementUnknown();
	    nn.setDistance(this.distance);
	    return nn;
	}
    }