Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

257
Vistas
Probabilidad de valor basada en porcentaje

¿Hay alguna manera de extraer un valor basado en un porcentaje?

Probabilidad de valor:
Malo: 1%
Normal: 29%
Bueno: 70%

 var move ["bad","normal","good"];

Una declaración condicional simple:

 if (move == "bad") { bad_move = "That's a bad move!"; } else if (move == "normal") { normal_move = "Classic move!"; } else { good_move = "Amazing move!"; }

Entonces, ¿PHP es mejor que Javascript para este tipo de problema?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Podrías escribir una función que muestree valores con porcentajes de probabilidad dados:

 function weightedSample(pairs) { const n = Math.random() * 100; const match = pairs.find(({value, probability}) => n <= probability); return match ? match.value : last(pairs).value; } function last(array) { return array[array.length - 1]; } const result = weightedSample([ {value: 'Bad', probability: 1}, {value: 'Normal', probability: 29}, {value: 'Good', probability: 70} ]); console.log(result);

No puedo decir si PHP sería mejor. Este tipo de problema no debería ser más/menos difícil en PHP. Lo que debe usar (JS o PHP) realmente depende de si la función debe ejecutarse o no en el servidor o el cliente.

about 4 years ago · Santiago Trujillo Denunciar

0

Sugiero usar una verificación continua de la probabilidad y el resto del número aleatorio.

Esta función establece primero el valor devuelto al último índice posible e itera hasta que el resto del valor aleatorio es menor que la probabilidad real.

Las probabilidades tienen que sumar uno.

 function getRandomIndexByProbability(probabilities) { var r = Math.random(), index = probabilities.length - 1; probabilities.some(function (probability, i) { if (r < probability) { index = i; return true; } r -= probability; }); return index; } var i, move = ["bad", "normal", "good"], probabilities = [0.01, 0.29, 0.7], count = {}, index; move.forEach(function (a) { count[a] = 0; }); for (i = 0; i < 1e6; i++) { index = getRandomIndexByProbability(probabilities); count[move[index]]++; } console.log(count);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda