Saltar al contenido

¿Existe una forma más sencilla de implementar una función de probabilidad en JavaScript?

Es importante interpretar el código bien antes de adaptarlo a tu proyecto y si tquieres aportar algo puedes dejarlo en los comentarios.

Solución:

Podrías hacer algo como…

var probability = function(n) 
     return !!n && Math.random() <= n;
;

Entonces llámalo con probability(.7). funciona porque Math.random() devuelve un número entre e inclusive de 0 y 1 (Ver comentario).

Si debes usar 70simplemente divídalo 100 en el cuerpo de su función.

Función Probabilidad:

probability(n)
    return Math.random() < n;



// Example, for a 75% probability
if(probability(0.75))
    // Code to run if success


Si leemos sobre Math.random(), devolverá un número en el intervalo[0;1)queincluye[0;1)intervalwhichincludes0 pero excluir 1por lo que para mantener una distribución uniforme, necesitamos excluir el límite superior, es decir, usando < y no <=.


Comprobación de la probabilidad límite superior e inferior (que son 0% o 100%):

Lo sabemos 0 ≤ Math.random() < 1 entonces, para un:

  • Probabilidad de 0% (cuando n === 0siempre debe regresar false):

    Math.random() < 0 // That actually will always return always false => Ok
    
  • Probabilidad del 100% (cuando n === 1siempre debe regresar true):

    Math.random() < 1 // That actually will always return always true => Ok
    

Ejecución de la prueba de la función de probabilidad

// Function Probability
function probability(n)
  return Math.random() < n;


// Running test with a probability of 86% (for 10 000 000 iterations)
var x = 0;
var prob = 0.86;
for(let i = 0; i < 10000000; i++)
	if(probability(prob))
		x += 1;
	

console.log(`$x of 10000000 given results by "Math.random()" were under $prob`);
console.log(`Hence so, a probability of $x / 100000 %`);

Si haces scroll puedes encontrar las explicaciones de otros administradores, tú además tienes la opción de insertar el tuyo si dominas el tema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *