[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: [QUIZ] Probable Iterations (#141

Urs Meyer

10/3/2007 5:28:00 PM


my first contribution... nothing spectacular.
/urs


#!/usr/bin/ruby
#
# 141 probable iterations

require 'optparse'

def generate(n, m, &blk)
if n == 0
yield []
else
1.upto(m) { |i|
generate(n-1, m) { |result| yield result + [i] }
}
end
end

options = {}
OptionParser.new do |opts|
opts.on("-v", "--verbose", "verbose") { |v| options[:verbose] = v }
opts.on("-s", "--samples", "show samples") { |v| options[:samples] = v }
end.parse!

if ARGV.length != 2
STDERR.puts "usage: #{$0} [-s|-v] n k"
exit
end

n = ARGV[0].to_i
k = ARGV[1].to_i

possible = desired = 0

# generate all possible solutions of throwing n dice

generate(n, 6) { |soln|
possible += 1

# selection criteria: at least k fives
found = soln.select{ |i| i==5 }.size >= k

desired += 1 if found
puts "%10d" % possible + " " + soln.inspect + (found ? " <==" : "") if ( options[:verbose] || options[:samples] && possible % 50000 == 1)
}

puts
puts "Number of possible outcomes is #{possible}"
puts "Number of desired outcomes is #{desired}"
puts
puts "Probability is #{desired.to_f/possible}"

--
GMX FreeMail: 1 GB Postfach, 5 E-Mail-Adressen, 10 Free SMS.
Alle Infos und kostenlose Anmeldung: http://www.gmx.net/de/g...