in pytheas-core/src/main/resources/js/d3/lib/science/science.stats.js [290:326]
function science_stats_kmeansRandom(k, vectors) {
var n = vectors.length;
if (k > n) return null;
var selected_vectors = [];
var selected_indices = [];
var tested_indices = {};
var tested = 0;
var selected = 0;
var i,
vector,
select;
while (selected < k) {
if (tested === n) return null;
var random_index = Math.floor(Math.random() * n);
if (random_index in tested_indices) continue;
tested_indices[random_index] = 1;
tested++;
vector = vectors[random_index];
select = true;
for (i = 0; i < selected; i++) {
if (science_stats_kmeansCompare(vector, selected_vectors[i])) {
select = false;
break;
}
}
if (select) {
selected_vectors[selected] = vector;
selected_indices[selected] = random_index;
selected++;
}
}
return selected_vectors;
}