Esta vez el problema es matemático...
Estoy haciendo unas pruebas para obtener cálculos sobre probabilidades, todo funciona bien hasta que deseo obtener las probabilidades de acierto si se obtienen x cantidad de numeros acertados de un total de 5.
La fórmula para calcular eso es la siguiente:
Y el resultado que se espera de haber acertado 3 numeros de 5 es el siguiente:
pero a mi me da éste resultado dentro de un bucle para los diferentes aciertos:
Código HTML:
Ver original1 aciertos: 1 de 1.1863965751816E-6 -> desconozco el resultado correcto
2 aciertos: 1 de 0.0005979438738915 -> desconozco el resultado correcto
3 aciertos: 1 de 0.11121756054382 -> aquí debería de dar 579.76
4 aciertos: 1 de 6.784271193173 -> desconozco el resultado correcto
5 aciertos: 1 de 81.411254318076 -> desconozco el resultado correcto
aquí el código:
Código PHP:
Ver original$jackpot = prob_jackpot($n, $r);
$html = '';
for($k = 1; $k <= $r; $k++) {
$smallest[$k] = prob_smallest($n, $r, $k);
$html .= '<label>' . $k . ' aciertos: 1 de ' . $smallest[$k] .'</label><br>';
}
function factorial($n) {
if($n < 2)
return 1;
return $n * factorial($n - 1);
}
function prob_jackpot($n, $r) {
return factorial($n) / (factorial($r) * factorial($n - $r));
}
function prob_smallest($n, $r, $k) {
global $jackpot;
return ((factorial($r) / (factorial($k) * factorial($r - $k))) * (factorial($n - $r) / (factorial($r - $k) * factorial($n - $r - $k)))) / $jackpot;
}
NOTA: se puede obviar el uso de la función
factorial() y sustiuirlo por
gmp_fact() (previa habilitación de la extensión para php), pero al hacerlo, los resultados son números enteros.