class RSampler::Multinomial
Multinomial
¶ ↑
Used to sample samples in a multinomial distribution
A minial usage could be:
RSampler::Multinomial.sampling(prob, sample_num) # => an array of samples
Attributes
accum_prob[R]
total_num[R]
Public Class Methods
new(prob)
click to toggle source
# File lib/rsampler/multinomial.rb, line 15 def initialize(prob) @total_num = prob.size @accum_prob = prob.inject([0.0]) do |accum_sum, ele| accum_sum + [ accum_sum.last + ele] end end
sampling(prob, sample_num)
click to toggle source
# File lib/rsampler/multinomial.rb, line 22 def self.sampling(prob, sample_num) self.new(prob).sampling(sample_num) end
Public Instance Methods
sampling(sample_num)
click to toggle source
# File lib/rsampler/multinomial.rb, line 26 def sampling(sample_num) Array.new(sample_num) { rand }.inject([]) do |res, ran| res << @accum_prob.find_index {|ele| ele > ran} - 1 end end