De alguna manera necesito encontrar una solución al problema, sin embargo, no puedo saber exactamente qué y cómo se puede lograr.
Imaginemos que tengo algunas propiedades
prop1 - 7%
prop2 -3%
prop4 - 35%
y así. los valores anteriores (7,3,35) son cambios porcentuales de ser seleccionado.
Ahora, tengo un número aleatorio entre 0 y 1.
¿Puedo de alguna manera usar la información anterior y elegir la propiedad según ese número aleatorio y los porcentajes?
Cómo puede ser posible ? Perdón por mi pregunta fuera de este mundo.
Puede usar un número aleatorio para elegir una opción en una lista ponderada de opciones, ya sea que la suma de todas las ponderaciones sume 100 o no, usando este algoritmo:
Algún código de ejemplo:
const options = [ { id: 1, weight: 0.5 }, { id: 2, weight: 2 }, { id: 3, weight: 1 }, ]; const pick = function (options) { const weightTotal = options.reduce((sum, option) => sum + option.weight, 0); const seed = Math.random(); const weightedSeed = seed * weightTotal; let runningTotal = 0; for (let option of options) { runningTotal += option.weight; if (runningTotal > weightedSeed) { return option; } } }; console.log(pick(options).id);Este método requiere que sus opciones disponibles sean iterables, pero su orden no importa ya que de todos modos está usando una semilla aleatoria.