|
#!/usr/bin/ruby
#
#
define TRIALS = 10;
func prob_choice_picker(options) {
var n = 0;
var a = [];
options.each { |k,v|
n += v;
a << [n, k];
}
func {
var r = 1.rand;
a.first{|e| r <= e[0] }[1];
}
}
var ps = Hash.new(
aleph => 1/5,
beth => 1/6,
gimel => 1/7,
daleth => 1/8,
he => 1/9,
waw => 1/10,
zayin => 1/11
);
ps{:heth} = (1 - ps.values.sum);
var picker = prob_choice_picker(ps);
var results = Hash.new;
range(0, TRIALS).each {
results{picker()} := 0 ++;
}
say "Event Occurred Expected Difference";
results.sort_by {|k| results{k} }.reverse.each { |pair|
var(k, v) = pair...;
printf("%-6s %f %f %f\n",
k, v/TRIALS, ps{k},
abs(v/TRIALS - ps{k})
);
}
|