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.  
  14. m, d = count(beta, m, a0, n)
  15.  
  16. puts "average: #{m}"
  17. puts "dispersion: #{d}"
Success #stdin #stdout 0s 4760KB
stdin
Standard input is empty
stdout
average: NaN
dispersion: NaN