Class: Musicality::RandomSampler
- Inherits:
-
Object
- Object
- Musicality::RandomSampler
- Defined in:
- lib/musicality/composition/util/random_sampler.rb
Instance Attribute Summary collapse
-
#probabilities ⇒ Object
readonly
Returns the value of attribute probabilities.
-
#values ⇒ Object
readonly
Returns the value of attribute values.
Instance Method Summary collapse
-
#initialize(vals, probs) ⇒ RandomSampler
constructor
A new instance of RandomSampler.
- #sample(n = nil) ⇒ Object
Constructor Details
#initialize(vals, probs) ⇒ RandomSampler
Returns a new instance of RandomSampler.
5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/musicality/composition/util/random_sampler.rb', line 5 def initialize vals, probs @values, @probabilities = vals, probs total_prob = probs.inject(0,:+) raise ArgumentError, "Total probability is not 1" if total_prob != 1 offsets = AddingSequence.new(probs).over(1...probs.size).to_a changes = vals[1..-1].map{|val| Change::Immediate.new(val) } value_changes = Hash[ [offsets, changes].transpose ] @val_comp = ValueComputer.new(vals.first, value_changes) end |
Instance Attribute Details
#probabilities ⇒ Object (readonly)
Returns the value of attribute probabilities.
4 5 6 |
# File 'lib/musicality/composition/util/random_sampler.rb', line 4 def probabilities @probabilities end |
#values ⇒ Object (readonly)
Returns the value of attribute values.
4 5 6 |
# File 'lib/musicality/composition/util/random_sampler.rb', line 4 def values @values end |
Instance Method Details
#sample(n = nil) ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/musicality/composition/util/random_sampler.rb', line 17 def sample n=nil if n.nil? return @val_comp.at(rand) else return Array.new(n){ @val_comp.at(rand) } end end |