Class: RandomGaussian

Inherits:
Object
  • Object
show all
Defined in:
lib/tensor_stream/evaluator/operation_helpers/random_gaussian.rb

Overview

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(mean, stddev, rand_helper = lambda { Kernel.rand }) ⇒ RandomGaussian

Returns a new instance of RandomGaussian.



3
4
5
6
7
8
9
# File 'lib/tensor_stream/evaluator/operation_helpers/random_gaussian.rb', line 3

def initialize(mean, stddev, rand_helper = lambda { Kernel.rand })
  @rand_helper = rand_helper
  @mean = mean
  @stddev = stddev
  @valid = false
  @next = 0
end

Class Method Details

.gaussian(mean, stddev, rand) ⇒ Object



24
25
26
27
28
29
30
31
# File 'lib/tensor_stream/evaluator/operation_helpers/random_gaussian.rb', line 24

def self.gaussian(mean, stddev, rand)
  theta = 2 * Math::PI * rand.call
  rho = Math.sqrt(-2 * Math.log(1 - rand.call))
  scale = stddev * rho
  x = mean + scale * Math.cos(theta)
  y = mean + scale * Math.sin(theta)
  return x, y
end

Instance Method Details

#randObject



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/tensor_stream/evaluator/operation_helpers/random_gaussian.rb', line 11

def rand
  if @valid then
    @valid = false
    return @next
  else
    @valid = true
    x, y = self.class.gaussian(@mean, @stddev, @rand_helper)
    @next = y
    return x
  end
end