Estoy tratando de eliminar elementos aleatorios de una lista de combinaciones cartesianas de valores,
para que afecte a los elementos de forma menos uniforme.
De modo que, por ejemplo, algunos artículos ya no existen, o en cantidades muy bajas, mientras que otros mantienen sus números.
pero aunque elimino más de 200 elementos del total de 625 elementos, ningún elemento individual obtiene una distribución inferior a alrededor de ~70.
Hubiera esperado que algunos artículos desaparecieran por completo , o al menos se distribuyeran mucho menos.
¿Cómo se logra una distribución más desigual?
base = [ ['a1', 'a2', 'a3', 'a4', 'a5'], ['b1', 'b2', 'b3', 'b4', 'b5'], ['c1', 'c2', 'c3', 'c4', 'c5'], ['d1', 'd2', 'd3', 'd4', 'd5'], ] const cartesian = (...a) => a.reduce((a, b) => a.flatMap(d => b.map(e => [d, e].flat()))) const countDistributions = output => { const counts = {} output.forEach(item => { item.forEach(letter => { counts[letter] = (counts[letter] || 0) + 1 }) }) return counts } const output = cartesian(...base) console.log(countDistributions(output)) output.sort(() => Math.random() - 0.5) const dropSize = output.length / 3 truncatedOutput = output.slice(0, output.length - dropSize) console.log(countDistributions(truncatedOutput))