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" /> |