Sha256: 37275c6ad02e950e5ce38677e980cdbc77ff7cce64b2c5f4db9c03b56a0b61b6
Contents?: true
Size: 724 Bytes
Versions: 2
Compression:
Stored size: 724 Bytes
Contents
# http://creativecommons.org/publicdomain/zero/1.0/ class RandomGaussian def initialize(mean, stddev, rand_helper = lambda { Kernel.rand }) @rand_helper = rand_helper @mean = mean @stddev = stddev @valid = false @next = 0 end 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 private 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 end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
tensor_stream-0.1.1 | lib/tensor_stream/evaluator/operation_helpers/random_gaussian.rb |
tensor_stream-0.1.0 | lib/tensor_stream/evaluator/operation_helpers/random_gaussian.rb |