- or download this
sub binomial {
my ($n,$s)=@_;
...
? 0 | ($_[1] + 1) * binomial( $_[0], $_[1] + 1) / ($_[0] -
+ $_[1])
: 1;
}
- or download this
# Usage:
# my @probs = prob_binomial( $span, $avg);
...
# using ~1000 element array, adjust to suit ranges
my @picklist = map {($min+$_) x int( .5 + 1000 * $problist[$_])} 0..$m
+ax-$min;
print $picklist[rand @picklist],$" for 1..$num;
- or download this
sub prob_hyper {
my ($N1,$N2,$n)=@_;
my $span = $N1<$n? $N1 : $n;
map {binomial($N1,$_) * binomial($N2,$n-$_) / binomial($N1+$N2,$n)
+} 0..$span;
}