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 original
1 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.