Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created September 1, 2016 20:29
Show Gist options
  • Save parzibyte/c4f2783f8ea9a1e64a0ea2e2e2e71c6e to your computer and use it in GitHub Desktop.
Save parzibyte/c4f2783f8ea9a1e64a0ea2e2e2e71c6e to your computer and use it in GitHub Desktop.
Distribución de Bernoulli
<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" />
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment