在Ruby中,我需要從指數分佈中抽取平均值爲m
。請告訴我如何快速有效地做到這一點。例如。讓我們:如何從Ruby中的指數分佈繪製?
m = 4.2
def exponential_distribution
rand(m * 2)
end
當然不過,這個代碼是錯誤的,而且,它只返回整數結果。我今天已經很累了,請提醒我一個好的解決方案。
在Ruby中,我需要從指數分佈中抽取平均值爲m
。請告訴我如何快速有效地做到這一點。例如。讓我們:如何從Ruby中的指數分佈繪製?
m = 4.2
def exponential_distribution
rand(m * 2)
end
當然不過,這個代碼是錯誤的,而且,它只返回整數結果。我今天已經很累了,請提醒我一個好的解決方案。
如何使用the distribution
gem?這裏有一個例子:
require 'distribution'
mean = 4.2
lambda = mean**-1
# generate a rng with exponential distribution
rng = Distribution::Exponential.rng(lambda)
# sample a value
sample = rng.call
如果您需要更改的lambda
值很多時候可能是直接使用p_value
方法有用。一個好的樣本可以在the source code for Distribution::Exponential#rng
中找到,它基本上只是在內部使用p_value
。下面是如何做到這一點的例子:
require 'distribution'
# use the same rng for each call
rng = Random
1.step(5, 0.1) do |mean|
lambda = mean**-1
# sample a value
sample = Distribution::Exponential.p_value(rng.rand, lambda)
end
如果你想從頭開始,你可以使用inversion做到這一點。
def exponential(mean)
-mean * Math.log(rand) if mean > 0
end
如果你想用率lambda
到其參數的平均值和速度是彼此的逆。除以-lambda
而不乘以-mean
。
從技術上講,它應該是log(1.0 - rand)
,但由於1.0 - rand
具有均勻的分佈,因此只需使用rand
即可保存一個算術運算。
謝謝。今天我真的很累。 –
有多少這樣的寶石?如何比較使用例如。 Ruby前端到R?一旦我確定我有一個好的,我會用它。基本上這是我想要的。 –
任何一種靈魂給我的代碼? –
我相信它是由SciRuby的人制作和使用的,我對此有着豐富的經驗。我不知道任何有競爭力的寶石。 –