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.