#!/usr/bin/perl -w # use bignum qw/e PI/; use strict; my $DEBUG = 0; my $pi = 4*atan2(1,1); print "pi = $pi\n" if $DEBUG; my $pi2 = 8*atan2(1,1); my $inv_sqpi2 = 1/sqrt($pi2); my $e = exp(1); print "e = $e\n" if $DEBUG; my $z = $ARGV[0]; die "Wrong number as argument" unless ($z>0 && $z=~/[\d|\.]/ && defined $z); my $step = 1_000_000; # compromiso calidad/velocidad my $inv_step = 1/$step; my $STATIC = $inv_step * $inv_sqpi2; my $r = 0.5; # inicio en 0 # densidad de la distribución normal estandarizada # Z = (1/sqrt(2*pi)) * exp(1)^(-0.5*z*z) for ( my $i = $inv_step; $i <= $z; $i += $inv_step ) { $r += $STATIC * ($e**(-0.5*$i*$i)); # print "\r$r" if $DEBUG; } # my $rr = sprintf ("%.7f",$r); print "P[Z<=$z] = $r\n"; my $tailright = 1 - $r; print "P[Z > $z] = $tailright\n"; my $tailleft = $tailright; $r -= $tailleft; print "P[-$z<=Z<=$z] = $r\n"; __END__ Esta utilidad nos devuelve la probabilidad de una tabla normal N(0,1) de una cola y de dos colas