我需要将均值设为2,从1到10,000随机数开始。
require 'distribution'
mean = 2
# generate a rng with exponential distribution
rng = Distribution::Exponential.rng(mean)
答案 0 :(得分:1)
好吧,我不是一个统计学家,所以我在这里的代码中有点迷失。
那么,你能告诉我,rng
(它被命名为l
)的第一个参数应该代表“限制”吗?
如果是这样,我真的不知道,我得到了你必须得到的同样结果,但同样,我不是统计学家,甚至不是数学家,我只是喜欢编码,所以我我可能没有太大的帮助。
编辑:所以,再一次,我真的不知道发生了什么或应该在这里发生什么。这里给出了一个相对接近2的平均值(我只是通过弄乱l
值得到了这个):
require 'distribution'
rng=Distribution::Exponential.rng(0.5)
sum=0
1000.times { sum += rng.call }
sum /= 1000
puts sum
似乎给出的值一般在1.9到2.1之间。希望这会有所帮助:)
打印每个值:
require 'distribution'
rng = Distribution::Exponential.rng(0.5)
values = [] # we'll store each value in an array
# calculate the results
how_many = 1000 # let's store 1000 in a variable since we'll reuse the value
how_many.times { values << rng.call } # rng is now a Proc, so we use call to get our value
# print out the results
values.each_with_index { |v,i| puts "#{i+1}: #{v}" } # print each value one by one
puts
puts "Total sum: #{values.inject(&:+)}"
puts "Mean: #{values.inject(&:+)/how_many}"
同样,不确定这是不是“正确”或者你正在寻找什么,但它肯定接近2.尝试一个大于1000的数字,比如100000。