docs: Point chooseCentre(treeNode node, MTRandom clustererRandom){
  
  		//How many times should we try to choose a centre ??
  		int times = 3;
  			
  		//stores the nodecost if node is split with the best centre
  		double minCost = node.cost;
  		Point bestCentre = null;
  		
  		//loop counter variable
  		int i;
  		int j;
  		
  		for(j=0;j<times;j++){
  			//sum of the relativ cost of the points
  			double sum = 0.0;
  			//random number between 0 and 1
  			double random = clustererRandom.nextDouble();
  			
  			for(i=0;i<node.n;i++){
  			
  				sum += treeNodeCostOfPoint(node,node.points[i]) / node.cost;
  				if(sum >= random){
  					if(node.points[i].weight == 0.0){
  						//printf("ERROR: CHOOSEN DUMMY NODE THOUGH OTHER AVAILABLE \n");
  						return null;
  					}
  					double curCost = treeNodeSplitCost(node,node.centre,node.points[i]);
  					if(curCost < minCost){
  						bestCentre = node.points[i];
  						minCost = curCost;
  					}
  					break;
  				}
  			}
  		}
  		if(bestCentre == null){
  			return node.points[0];
  		} else {
  			return bestCentre;
  		}
  	}