Sha256: 0b6932985863d2a6703df1268cb388af9f352f91ee6af1ca421e4fb1acdb60ed

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 KB

Contents

module Distribution
  module Uniform
    module GSL_
      class << self
        # Returns a lambda to call for uniformly distributed random numbers
        # returns a double precision float in [0, 1]
        def rng(lower = 0, upper = 1, seed = nil)
          seed = Random.new_seed.modulo 100000007 if seed.nil?
          rng = GSL::Rng.alloc(GSL::Rng::MT19937, seed)
          
          -> { lower + (upper - lower) * rng.uniform }
        end
        
        # :nodoc:
        def pdf(x, lower = 0, upper = 1)
          # rb-gsl/blob/master/ext/gsl_native/randist.c#L1732
          GSL::Ran.flat_pdf(x, lower, upper)
        end
        
        # :nodoc:
        def cdf(x, lower = 0, upper = 1)
          # rb-gsl/blob/master/ext/gsl_native/cdf.c#L644
          GSL::Cdf.flat_P(x, lower, upper)
        end
        
        # :nodoc:
        def quantile(qn, lower, upper)
          # rb-gsl/blob/master/ext/gsl_native/cdf.c#L646
          GSL::Cdf.flat_Pinv(qn, lower, upper)
        end
        
        alias_method :p_value, :quantile
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
distribution-0.8.0 lib/distribution/uniform/gsl.rb