Class: ERV::DiscreteUniformDistribution
- Inherits:
-
Distribution
- Object
- Distribution
- ERV::DiscreteUniformDistribution
- Defined in:
- lib/erv/discrete_uniform_distribution.rb
Constant Summary
Constants inherited from Distribution
ERV::Distribution::DEFAULT_SEED
Instance Attribute Summary collapse
-
#mean ⇒ Object
readonly
Returns the value of attribute mean.
-
#variance ⇒ Object
readonly
Returns the value of attribute variance.
Instance Method Summary collapse
-
#initialize(opts = {}) ⇒ DiscreteUniformDistribution
constructor
A new instance of DiscreteUniformDistribution.
- #sample ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ DiscreteUniformDistribution
Returns a new instance of DiscreteUniformDistribution.
9 10 11 12 13 14 15 16 17 18 |
# File 'lib/erv/discrete_uniform_distribution.rb', line 9 def initialize(opts={}) super(opts) @max = opts[:max_value]&.to_i raise ArgumentError unless @max @min = opts.fetch(:min_value, 0).to_i @mean = (@max + @min) / 2.0 # See https://en.wikipedia.org/wiki/Discrete_uniform_distribution @variance = ((@max - @min + 1).to_f ** 2 - 1.0) / 12.0 end |
Instance Attribute Details
#mean ⇒ Object (readonly)
Returns the value of attribute mean.
7 8 9 |
# File 'lib/erv/discrete_uniform_distribution.rb', line 7 def mean @mean end |
#variance ⇒ Object (readonly)
Returns the value of attribute variance.
7 8 9 |
# File 'lib/erv/discrete_uniform_distribution.rb', line 7 def variance @variance end |
Instance Method Details
#sample ⇒ Object
20 21 22 |
# File 'lib/erv/discrete_uniform_distribution.rb', line 20 def sample (@min.to_f + @rng.rand * (@max - @min + 1).to_f).floor end |