fork download
  1. def count(beta, m, a0, n)
  2. f = lambda { |x| (beta * x) % m }
  3.  
  4. ar = [a0]
  5. (n - 1).times { ar << f[ar.last] }
  6.  
  7. m = ar.inject(0, :+) / n.to_f
  8. d = ar.inject(0) { |r, e| r + (e - m) ** 2 } / (n - 1)
  9. [m, d]
  10. end
  11.  
  12. #beta, m, a0, n = (1..4).map { gets.to_i }
  13. beta, m, a0, n = 2 ** 16 + 3, 2 ** 31, 1, 4000
  14.  
  15. m, d = count(beta, m, a0, n)
  16.  
  17. puts "average: #{m}"
  18. puts "dispersion: #{d}"
Success #stdin #stdout 0.01s 4760KB
stdin
Standard input is empty
stdout
average: 1070964686.992
dispersion: 375490198521629950.0