Class: ERV::DiscreteUniformDistribution

Inherits:
Distribution show all
Defined in:
lib/erv/discrete_uniform_distribution.rb

Constant Summary

Constants inherited from Distribution

ERV::Distribution::DEFAULT_SEED

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ DiscreteUniformDistribution

Returns a new instance of DiscreteUniformDistribution.

Raises:

  • (ArgumentError)


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

#meanObject (readonly)

Returns the value of attribute mean.



7
8
9
# File 'lib/erv/discrete_uniform_distribution.rb', line 7

def mean
  @mean
end

#varianceObject (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

#sampleObject



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