private void initializeClusters() {
    if (m_uniqueInitSamplesList.size() == 0) {
      throw new RuntimeException();
    }
    for (int i = 0; i < m_numClusters; i++) {
      int randomIndex = (int) Math.floor(m_uniqueInitSamplesList.size() * Math.random());
      m_clusters[i] =
          initSmoothClusterRandomly((IntTouple) m_uniqueInitSamplesList.get(randomIndex));
      m_uniqueInitSamplesList.remove(randomIndex);
    }

    m_state = state_updating;

    for (int i = 0; i < m_initCounter; i++) {
      addSample(m_initSamples[i]);
    }
  }