Sha256: 844e34103319f8dceb09a5c14c872bed3837686badcd3b997aa0742cdfee04d3
Contents?: true
Size: 1.09 KB
Versions: 1
Compression:
Stored size: 1.09 KB
Contents
module MonteCarlo class Experiment DEFAULT_TIMES = 10000 attr_accessor :times, :sample_method, :computation, :setup, :reset def self.run(times = DEFAULT_TIMES, &block) MonteCarlo::Experiment.new(times, &block).run end def initialize(times = DEFAULT_TIMES, &block) @times = times @sample_method = block end def run if @sample_method.nil? raise MonteCarlo::Errors::NoSampleMethodError, 'A sample method for this experiment is not defined' end results = MonteCarlo::ExperimentResults.new @times.times do |index| begin @setup.call() unless @setup.nil? results << run_sample(index) ensure @reset.call() unless @reset.nil? end end results end private def run_sample(index) result = MonteCarlo::Result.new(index) result.sample_value = @sample_method.call() if @computation.nil? result.value = result.sample_value else result.value = @computation.call(result.sample_value) end result end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
monte_carlo-0.0.3 | lib/monte_carlo/experiment.rb |