docs: protected Cluster[] calculateInitialClusters(List<? extends Clusterable> values, int numClusters){
          Cluster[] clusters = new Cluster[numClusters];
          //choose centers and create the initial clusters
          Random random = new Random(1);
          Set<Integer> clusterCenters = new HashSet<Integer>();
          for ( int i = 0; i < numClusters; i++ ){
              int index = random.nextInt(values.size());
              while ( clusterCenters.contains(index) ){
                  index = random.nextInt(values.size());
              }
              clusterCenters.add(index);
              clusters[i] = new Cluster(values.get(index).getLocation(),i);
          }
          return clusters;
      }