style img change attribute javascript random percentage

javascript - img - title html attribute



¿Porcentaje de posibilidades de decir algo? (3)

Cómo lo hago así ...

  • 80% de las veces dirá sendMessage("hi");
  • 5% de las veces dirá sendMessage("bye");
  • y 15% de las veces dirá sendMessage("Test");

¿Tiene que hacer algo con Math.random ()? me gusta

if (Math.random() * 100 < 80) { sendMessage("hi"); } else if (Math.random() * 100 < 5) { sendMessage("bye"); }


Aquí hay una solución aproximada muy simple al problema. Ordene una matriz de valores verdadero / falso al azar y luego elija el primer elemento.

Esto debería dar una probabilidad de 1 en 3 de ser cierto.

var a = [true, false, false] a.sort(function(){ return Math.random() >= 0.5 ? 1 : -1 })[0]


En casos como este, generalmente es mejor generar un número aleatorio y seleccionar el caso en función de ese número único, de esta manera:

int foo = Math.random() * 100; if (foo < 80) // 0-79 sendMessage("hi"); else if (foo < 85) // 80-84 sendMessage("bye"); else // 85-99 sendMessage("test");


Sí, Math.random() es una excelente manera de lograr esto. Lo que quiere hacer es calcular un solo número aleatorio y luego tomar decisiones basadas en eso:

var d = Math.random(); if (d < 0.5) // 50% chance of being here else if (d < 0.7) // 20% chance of being here else // 30% chance of being here

De esa forma no pierdes ninguna posibilidad.