./ruby/quiz/tests.rb

download original
#p(members,limit,intervalsize) =
#  intervalsize * members/limit * (1-(members-1)/(limit-1)) * (1-(members-1)/(limit-2)) ... * (1-(members-1)/(limit-intervalsize+1))

#  =

#    intervalsize * members/limit * PI_{i=1..intervalsize-1} (1-(members-1)/(limit-i))


# probability that exactly one number occurs in an interval of size
# intervalsize in a sampling with parameters members and limit
def p(members,limit,intervalsize)
  (1...intervalsize).inject(intervalsize * members/limit){|x,i|
    x * (1-(members-1)/(limit-i))
  }
end



def p_n(members,limit,intervalsize,n_intervals)
  # p(members,limit,intervalsize) * p(members-1,limit-intervalsize,intervalsize) * ...
  res = 1
  (0..n_intervals).each do |n|
    res *= p(members-n,limit-n*intervalsize,intervalsize)
  end
  res
end

  
back to quiz

(C) 1998-2017 Olaf Klischat <olaf.klischat@gmail.com>