- Joined
- Apr 16, 2007
- Messages
- 177
Code:
class Integer
def choose( n )
return self.fac / ( ( self - n).fac * n.fac )
end
def fac()
return 1 if self <= 1
return self * (self-1).fac
end
end
module BernoulliChain
def bernoulli( n, p, k )
return ( n.choose k ) * ( p ** k ) * ( 1 - p ) ** ( n - k )
end
def bernoulli_upto( n, p, k_max )
a = 0
0.upto( k_max ) do |k|
a += bernoulli( n, p, k )
end
a
end
end