Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/04/2017, 20:21
Triby2
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 10 años, 4 meses
Puntos: 30
Cálculo de probabilidades

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 original
  1. 1 aciertos: 1 de 1.1863965751816E-6 -> desconozco el resultado correcto
  2. 2 aciertos: 1 de 0.0005979438738915 -> desconozco el resultado correcto
  3. 3 aciertos: 1 de 0.11121756054382 -> aquí debería de dar 579.76
  4. 4 aciertos: 1 de 6.784271193173 -> desconozco el resultado correcto
  5. 5 aciertos: 1 de 81.411254318076 -> desconozco el resultado correcto

aquí el código:
Código PHP:
Ver original
  1. $jackpot = prob_jackpot($n, $r);
  2.  
  3. $html = '';
  4. for($k = 1; $k <= $r; $k++) {
  5.     $smallest[$k] = prob_smallest($n, $r, $k);
  6.     $html .= '<label>' . $k . ' aciertos: 1 de ' . $smallest[$k] .'</label><br>';
  7. }
  8.  
  9. function factorial($n) {
  10.     if($n < 2)
  11.         return 1;
  12.  
  13.     return $n * factorial($n - 1);
  14. }
  15.  
  16. function prob_jackpot($n, $r) {
  17.     return factorial($n) / (factorial($r) * factorial($n - $r));
  18. }
  19.  
  20. function prob_smallest($n, $r, $k) {
  21.     global $jackpot;
  22.     return ((factorial($r) / (factorial($k) * factorial($r - $k))) * (factorial($n - $r) / (factorial($r - $k) * factorial($n - $r - $k)))) / $jackpot;
  23. }

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.

Última edición por Triby2; 02/04/2017 a las 20:28