Calcula la probabilidad usando la distribución de Bernoulli.
A Pen by Luis Cabrera Benito on CodePen.
Calcula la probabilidad usando la distribución de Bernoulli.
A Pen by Luis Cabrera Benito on CodePen.
| <div class="container-fluid" data-ng-app="app_probabilidad"> | |
| <div data-ng-controller="control_principal"> | |
| <div class="row"> | |
| <div class="col-xs-12 well"> | |
| <h1 class="text-center">Distribución de Bernoulli </h1> | |
| <div class="form-group"> | |
| <label for="null">Probabilidad de éxito: (P)</label> | |
| <input min="0" max="100" data-ng-model="probabilidad_exito_porcentaje" class="form-control" type="number" placeholder="Ingresa la probabilidad en porcentaje. Ej: 20"/> | |
| </div> | |
| <div class="form-group"> | |
| <label for="null">Probabilidad a calcular: (K)</label> | |
| <input data-ng-model="probabilidad_calcular" class="form-control" type="text" placeholder="Ingresa el valor de K. Ejemplo: 0"/> | |
| </div> | |
| <div class="form-group"> | |
| <label for="null">Total de intentos: (N)</label> | |
| <input data-ng-model="muestra" class="form-control" type="number" placeholder="Ingresa el valor de la muestra. Ejemplo: 14"/> | |
| </div> | |
| <button class="btn btn-success form-control" data-ng-click="resultado = aproximacion(muestra,probabilidad_exito_porcentaje,probabilidad_calcular)">Calcular</button> | |
| </div> | |
| </div> | |
| <br /> | |
| <div class="row"> | |
| <div class="col-xs-12"> | |
| <h2 class="text-center">Resultados:</h2> | |
| <div class="alert-success alert"> | |
| <p><strong>Probabilidad: </strong> {{resultado | number:30}}</p> | |
| <p><strong>Probabilidad en porcentaje: </strong> {{resultado * 100 | number:30}} %</p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> |
| var app = angular.module("app_probabilidad", []); | |
| app.controller("control_principal", function($scope){ | |
| $scope.iniciar = function(){ | |
| $scope.math = window.Math; | |
| } | |
| $scope.factorial = function(n){ | |
| return (n < 2) ? 1: n * $scope.factorial(n - 1); | |
| } | |
| $scope.combinacion = function(n,r){ | |
| return ( $scope.factorial(n) ) / ( $scope.factorial(n-r) * $scope.factorial( r ) ); | |
| } | |
| $scope.aproximacion = function(muestra,probabilidad_exito_porcentaje,probabilidad_calcular){ | |
| if(typeof muestra === "undefined" || typeof probabilidad_exito_porcentaje === "undefined" || typeof probabilidad_calcular === "undefined" || muestra === null || probabilidad_exito_porcentaje === null || probabilidad_calcular === null){ | |
| alert("Rellena todos los campos"); | |
| return; | |
| } | |
| var probabilidad_exito = probabilidad_exito_porcentaje / 100; | |
| var probabilidad_fracaso = 1 - probabilidad_exito; | |
| if(probabilidad_calcular.indexOf("-") !== -1 && probabilidad_calcular.indexOf(",") === -1){ | |
| var array_probabilidades = probabilidad_calcular.split("-"); | |
| if(array_probabilidades.length !== 2 || array_probabilidades[0].length <= 0 || array_probabilidades[1].length <= 0){ | |
| alert("El rango está mal"); | |
| return; | |
| }else{ | |
| var resultado = 0.0; | |
| for(var x = array_probabilidades[0]; x <= array_probabilidades[1]; x++){ | |
| resultado += $scope.combinacion(muestra, x) * $scope.math.pow(probabilidad_exito, x) * $scope.math.pow(probabilidad_fracaso, muestra - x); | |
| } | |
| return resultado; | |
| } | |
| }else if(probabilidad_calcular.indexOf(",") !== -1 && probabilidad_calcular.indexOf("-") === -1){ | |
| var array_probabilidades = probabilidad_calcular.split(","); | |
| var resultado = 0.0; | |
| for(var x = 0; x < array_probabilidades.length; x++) resultado += $scope.combinacion(muestra, array_probabilidades[x]) * $scope.math.pow(probabilidad_exito, array_probabilidades[x]) * $scope.math.pow(probabilidad_fracaso, muestra - array_probabilidades[x]); | |
| return resultado; | |
| }else if(isFinite(probabilidad_calcular)){ | |
| return $scope.combinacion(muestra, probabilidad_calcular) * $scope.math.pow(probabilidad_exito, probabilidad_calcular) * $scope.math.pow(probabilidad_fracaso, muestra - probabilidad_calcular); | |
| }else{ | |
| alert("Procura poner valores o rangos correctos.") | |
| } | |
| } | |
| $scope.iniciar(); | |
| }); |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.5/angular.min.js"></script> |
| <link href="https://bootswatch.com/united/bootstrap.min.css" rel="stylesheet" /> |