Sha256: 36404d788c5f7fe3757231599a11c8e21746765b5bb60d58e0204c2861a83a09
Contents?: true
Size: 1.48 KB
Versions: 7
Compression:
Stored size: 1.48 KB
Contents
# This test create a database to adjust the best algorithm # to use on correlation matrix $:.unshift(File.expand_path(File.dirname(__FILE__)+"/../../lib")) require 'distribution' require 'statsample' require 'benchmark' if !File.exists?("binomial_coefficient.ds") or File.mtime(__FILE__) > File.mtime("binomial_coefficient.ds") reps=100 #number of repetitions ns={ 5=> [1,3], 10=> [1,3,5], 50=> [1,3,5,10,25], 100=> [1,3,5,10,25,50], 500=> [1,3,5,10,25,50,100,250], 1000=> [1,3,5,10,25,50,100,250,500], 5000=> [1,3,5,10,25,50,100,250,500,1000,2500], 10000=>[1,3,5,10,25,50,100,250,500,1000,2500,5000] } rs=Statsample::Dataset.new(%w{n k mixed_factorial multiplicative}) ns.each do |n,ks| ks.each do |k| time_factorial= Benchmark.realtime do reps.times { (((n-k+1)..n).inject(1) {|ac,v| ac * v}).quo(Math.factorial(k)) } end time_multiplicative= Benchmark.realtime do reps.times { (1..k).inject(1) {|ac, i| (ac*(n-k+i).quo(i))} } end puts "n:#{n}, k:#{k} -> factorial:%0.3f | multiplicative: %0.3f " % [time_factorial, time_multiplicative] rs.add_case({'n'=>n,'k'=>k,'mixed_factorial'=>time_factorial, 'multiplicative'=>time_multiplicative}) end end else rs=Statsample.load("binomial_coefficient.ds") end rs.fields.each {|f| rs[f].type=:scale} rs.update_valid_data rs.save("binomial_coefficient.ds") Statsample::Excel.write(rs,"binomial_coefficient.xls")
Version data entries
7 entries across 7 versions & 1 rubygems