Seven-sided dice from five-sided dice
func dice5 { pick(1..5) }
func dice7 {
loop {
var d7 = ((5*dice5() + dice5() - 6) % 8)
d7 && return d7
}
}
var count7 = Hash()
var n = 1e6;
n.times { count7{dice7()} := 0 ++ }
count7.keys.sort.each { |k|
printf("%s: %5.2f%%\n", k, 100*(count7{k}/n * 7 - 1))
}
Output:
1: -0.00%
2: 0.02%
3: 0.23%
4: 0.42%
5: -0.23%
6: -0.54%
7: 0.10%