use strict; use Math::BigFloat; use Math::Big; my $G = 40; #$ARGV[0]; my $C = 25; #$ARGV[1]; my $n = 15; #$ARGV[2]; my $k = 14; #$ARGV[3]; sub choose { my $temp = Math::BigFloat->new('1'); $temp = Math::Big::factorial($_[0]) / Math::Big::factorial ($_[0] - $_[1]) / Math::Big::factorial($_[1]); return $temp; } my $p = Math::BigFloat->new('1'); my $denom = Math::BigFloat->new(choose($G, $n)); for (my $i = 0; $i < $k; $i++) { my $val1 = $G - $C; my $val2 = $n - $i; my $delta = Math::BigFloat->new(); $delta = choose($C, $i) * choose($val1, $val2) / $denom; print "$delta\n"; $p -= $delta; } print "Probability estimate: $p\n";