Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Density
- include Enumerable
- extend Forwardable
- attr_accessor :uniform, :fail
- def_delegators :@d, :each, :[], :[]=, :inspect, :delete
- def initialize(num=0)
- @d=Hash.new(Rational(0))
- @d[num]=Rational(1)
- @uniform=true
- @fail=false
- end
- # addition of INDEPENDENT densities
- def +(y)
- z=Density.new
- z.delete(0)
- z.uniform=@d.uniform
- z.fail=@d.fail
- if (y.is_a?Density)
- if (y.fail)
- z.fail=true
- end
- if (y.to_a.size>1 and x.to_a.size>1)
- z.uniform=false
- end
- @d.each do |xkey,xvalue|
- y.each do |ykey,yvalue|
- z[xkey+ykey]+=xvalue*yvalue
- end
- end
- elsif (y.is_a?Numeric)
- @d.each do |xkey,xvalue|
- z[xkey+y]+=xvalue
- end
- else
- #TODO
- end
- return z
- end
Advertisement
Add Comment
Please, Sign In to add comment