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. p ar
  8.  
  9. m = ar.inject(0, :+) / n.to_f
  10. d = ar.inject(0) { |r, e| r + (e - m) ** 2 } / (n - 1)
  11. [m, d]
  12. end
  13.  
  14. #beta, m, a0, n = (1..4).map { gets.to_i }
  15. beta, m, a0, n = 2 ** 16 + 3, 2 ** 31, 1, 10
  16.  
  17. m, d = count(beta, m, a0, n)
  18.  
  19. puts "average: #{m}"
  20. puts "dispersion: #{d}"
Success #stdin #stdout 0s 4760KB
stdin
Standard input is empty
stdout
[1, 65539, 393225, 1769499, 7077969, 26542323, 95552217, 334432395, 1146624417, 1722371299]
average: 333482888.4
dispersion: 365659468036210370.0