嘿,我的模拟有问题。Ruby中的蒙特卡洛模拟
我是Ruby-Starter,不知道我的代码中出了什么问题。这只是与模拟部分:
def mean
mean = self.reduce(:+)/self.length.to_f
return mean
end
def randn
begin
rg1 = (rand*2)-1
rg2 = (rand*2)-1
q = rg1**2 + rg2**2
end while (q == 0 || q > 1)
p = Math.sqrt((-2*Math.log(q))/q)
rn1 = rg1 * p
rn2 = rg2 * p
return rn1, rn2
end
monte_carlo = 10
ren1_sim = Array.new
ren2_sim = Array.new
monte_carlo.times {
(1..20).each{ |i|
(1..250).each { |j|
r = randn()
ren1= * Math.exp(mu_ren1 + sigma_ren1 * r[0])
# ren1 is an array with prices, mu_ren1 and sigma_ren1 are individual values
ren2= * Math.exp(mu_ren2 + chol_21 * r[0] + chol_22 * r[1])
# chol_21 and chol_22 are also individual values
ren1_sim.push(ren1)
ren2_sim.push(ren2)
}
}
}
puts ren1_sim.mean
puts ren2_sim.mean
我不没有最后两个穿得到一个错误,但是当我要计算阵列的平均ren1_sim和rent_sim我得到的错误:
undefined method 'mean' for #<Array:0x2acf318> (NoMethodError)
你知道如何解决这个问题吗?
好的,但是当我使用方法mean(s.o.)来计算数组的平均值时。但我仍然得到相同的错误。代码中必须有其他错误吗? – jeffrey 2012-04-15 10:10:48