Created
January 4, 2017 22:36
-
-
Save robertsosinski/6c48a113ca222fe1fde5b41e4ad8cfe8 to your computer and use it in GitHub Desktop.
Dice Rolling
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$odds = 0 | |
def sumProbability(dice, target) | |
if dice == 1 | |
"1 / 6" | |
else | |
prob = 6 ** dice | |
total = 6 * dice | |
if target < dice | |
"0" | |
elsif target > total | |
"0" | |
else | |
perform_roll(dice, [], target) / prob | |
"#{$odds} / #{prob}" | |
end | |
end | |
end | |
def perform_roll(rolls_left, acc, target) | |
if rolls_left == 0 | |
sum = acc.inject(0) {|i, m| i + m} | |
yes = sum == target | |
puts("#{acc.inspect} : #{target} = #{yes} : #{$odds}") | |
if sum == target | |
$odds += 1 | |
end | |
else | |
6.times do |i| | |
perform_roll(rolls_left - 1, acc + [i + 1], target) | |
end | |
end | |
end | |
#sumProbability(1,5) = 1/6 | |
#sumProbability(2,2) = 1/36 | |
#sumProbability(2,4) = (2, 2)*1, (1, 3)*2 = 3/36 | |
#sumProbability(3,5) = (1,1,3)*3, (1,2,2)*3 = 6/216 | |
puts sumProbability(3, 5) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[1, 1, 1] : 5 = false : 0 | |
[1, 1, 2] : 5 = false : 0 | |
[1, 1, 3] : 5 = true : 0 | |
[1, 1, 4] : 5 = false : 1 | |
[1, 1, 5] : 5 = false : 1 | |
[1, 1, 6] : 5 = false : 1 | |
[1, 2, 1] : 5 = false : 1 | |
[1, 2, 2] : 5 = true : 1 | |
[1, 2, 3] : 5 = false : 2 | |
[1, 2, 4] : 5 = false : 2 | |
[1, 2, 5] : 5 = false : 2 | |
[1, 2, 6] : 5 = false : 2 | |
[1, 3, 1] : 5 = true : 2 | |
[1, 3, 2] : 5 = false : 3 | |
[1, 3, 3] : 5 = false : 3 | |
[1, 3, 4] : 5 = false : 3 | |
[1, 3, 5] : 5 = false : 3 | |
[1, 3, 6] : 5 = false : 3 | |
[1, 4, 1] : 5 = false : 3 | |
[1, 4, 2] : 5 = false : 3 | |
[1, 4, 3] : 5 = false : 3 | |
[1, 4, 4] : 5 = false : 3 | |
[1, 4, 5] : 5 = false : 3 | |
[1, 4, 6] : 5 = false : 3 | |
[1, 5, 1] : 5 = false : 3 | |
[1, 5, 2] : 5 = false : 3 | |
[1, 5, 3] : 5 = false : 3 | |
[1, 5, 4] : 5 = false : 3 | |
[1, 5, 5] : 5 = false : 3 | |
[1, 5, 6] : 5 = false : 3 | |
[1, 6, 1] : 5 = false : 3 | |
[1, 6, 2] : 5 = false : 3 | |
[1, 6, 3] : 5 = false : 3 | |
[1, 6, 4] : 5 = false : 3 | |
[1, 6, 5] : 5 = false : 3 | |
[1, 6, 6] : 5 = false : 3 | |
[2, 1, 1] : 5 = false : 3 | |
[2, 1, 2] : 5 = true : 3 | |
[2, 1, 3] : 5 = false : 4 | |
[2, 1, 4] : 5 = false : 4 | |
[2, 1, 5] : 5 = false : 4 | |
[2, 1, 6] : 5 = false : 4 | |
[2, 2, 1] : 5 = true : 4 | |
[2, 2, 2] : 5 = false : 5 | |
[2, 2, 3] : 5 = false : 5 | |
[2, 2, 4] : 5 = false : 5 | |
[2, 2, 5] : 5 = false : 5 | |
[2, 2, 6] : 5 = false : 5 | |
[2, 3, 1] : 5 = false : 5 | |
[2, 3, 2] : 5 = false : 5 | |
[2, 3, 3] : 5 = false : 5 | |
[2, 3, 4] : 5 = false : 5 | |
[2, 3, 5] : 5 = false : 5 | |
[2, 3, 6] : 5 = false : 5 | |
[2, 4, 1] : 5 = false : 5 | |
[2, 4, 2] : 5 = false : 5 | |
[2, 4, 3] : 5 = false : 5 | |
[2, 4, 4] : 5 = false : 5 | |
[2, 4, 5] : 5 = false : 5 | |
[2, 4, 6] : 5 = false : 5 | |
[2, 5, 1] : 5 = false : 5 | |
[2, 5, 2] : 5 = false : 5 | |
[2, 5, 3] : 5 = false : 5 | |
[2, 5, 4] : 5 = false : 5 | |
[2, 5, 5] : 5 = false : 5 | |
[2, 5, 6] : 5 = false : 5 | |
[2, 6, 1] : 5 = false : 5 | |
[2, 6, 2] : 5 = false : 5 | |
[2, 6, 3] : 5 = false : 5 | |
[2, 6, 4] : 5 = false : 5 | |
[2, 6, 5] : 5 = false : 5 | |
[2, 6, 6] : 5 = false : 5 | |
[3, 1, 1] : 5 = true : 5 | |
[3, 1, 2] : 5 = false : 6 | |
[3, 1, 3] : 5 = false : 6 | |
[3, 1, 4] : 5 = false : 6 | |
[3, 1, 5] : 5 = false : 6 | |
[3, 1, 6] : 5 = false : 6 | |
[3, 2, 1] : 5 = false : 6 | |
[3, 2, 2] : 5 = false : 6 | |
[3, 2, 3] : 5 = false : 6 | |
[3, 2, 4] : 5 = false : 6 | |
[3, 2, 5] : 5 = false : 6 | |
[3, 2, 6] : 5 = false : 6 | |
[3, 3, 1] : 5 = false : 6 | |
[3, 3, 2] : 5 = false : 6 | |
[3, 3, 3] : 5 = false : 6 | |
[3, 3, 4] : 5 = false : 6 | |
[3, 3, 5] : 5 = false : 6 | |
[3, 3, 6] : 5 = false : 6 | |
[3, 4, 1] : 5 = false : 6 | |
[3, 4, 2] : 5 = false : 6 | |
[3, 4, 3] : 5 = false : 6 | |
[3, 4, 4] : 5 = false : 6 | |
[3, 4, 5] : 5 = false : 6 | |
[3, 4, 6] : 5 = false : 6 | |
[3, 5, 1] : 5 = false : 6 | |
[3, 5, 2] : 5 = false : 6 | |
[3, 5, 3] : 5 = false : 6 | |
[3, 5, 4] : 5 = false : 6 | |
[3, 5, 5] : 5 = false : 6 | |
[3, 5, 6] : 5 = false : 6 | |
[3, 6, 1] : 5 = false : 6 | |
[3, 6, 2] : 5 = false : 6 | |
[3, 6, 3] : 5 = false : 6 | |
[3, 6, 4] : 5 = false : 6 | |
[3, 6, 5] : 5 = false : 6 | |
[3, 6, 6] : 5 = false : 6 | |
[4, 1, 1] : 5 = false : 6 | |
[4, 1, 2] : 5 = false : 6 | |
[4, 1, 3] : 5 = false : 6 | |
[4, 1, 4] : 5 = false : 6 | |
[4, 1, 5] : 5 = false : 6 | |
[4, 1, 6] : 5 = false : 6 | |
[4, 2, 1] : 5 = false : 6 | |
[4, 2, 2] : 5 = false : 6 | |
[4, 2, 3] : 5 = false : 6 | |
[4, 2, 4] : 5 = false : 6 | |
[4, 2, 5] : 5 = false : 6 | |
[4, 2, 6] : 5 = false : 6 | |
[4, 3, 1] : 5 = false : 6 | |
[4, 3, 2] : 5 = false : 6 | |
[4, 3, 3] : 5 = false : 6 | |
[4, 3, 4] : 5 = false : 6 | |
[4, 3, 5] : 5 = false : 6 | |
[4, 3, 6] : 5 = false : 6 | |
[4, 4, 1] : 5 = false : 6 | |
[4, 4, 2] : 5 = false : 6 | |
[4, 4, 3] : 5 = false : 6 | |
[4, 4, 4] : 5 = false : 6 | |
[4, 4, 5] : 5 = false : 6 | |
[4, 4, 6] : 5 = false : 6 | |
[4, 5, 1] : 5 = false : 6 | |
[4, 5, 2] : 5 = false : 6 | |
[4, 5, 3] : 5 = false : 6 | |
[4, 5, 4] : 5 = false : 6 | |
[4, 5, 5] : 5 = false : 6 | |
[4, 5, 6] : 5 = false : 6 | |
[4, 6, 1] : 5 = false : 6 | |
[4, 6, 2] : 5 = false : 6 | |
[4, 6, 3] : 5 = false : 6 | |
[4, 6, 4] : 5 = false : 6 | |
[4, 6, 5] : 5 = false : 6 | |
[4, 6, 6] : 5 = false : 6 | |
[5, 1, 1] : 5 = false : 6 | |
[5, 1, 2] : 5 = false : 6 | |
[5, 1, 3] : 5 = false : 6 | |
[5, 1, 4] : 5 = false : 6 | |
[5, 1, 5] : 5 = false : 6 | |
[5, 1, 6] : 5 = false : 6 | |
[5, 2, 1] : 5 = false : 6 | |
[5, 2, 2] : 5 = false : 6 | |
[5, 2, 3] : 5 = false : 6 | |
[5, 2, 4] : 5 = false : 6 | |
[5, 2, 5] : 5 = false : 6 | |
[5, 2, 6] : 5 = false : 6 | |
[5, 3, 1] : 5 = false : 6 | |
[5, 3, 2] : 5 = false : 6 | |
[5, 3, 3] : 5 = false : 6 | |
[5, 3, 4] : 5 = false : 6 | |
[5, 3, 5] : 5 = false : 6 | |
[5, 3, 6] : 5 = false : 6 | |
[5, 4, 1] : 5 = false : 6 | |
[5, 4, 2] : 5 = false : 6 | |
[5, 4, 3] : 5 = false : 6 | |
[5, 4, 4] : 5 = false : 6 | |
[5, 4, 5] : 5 = false : 6 | |
[5, 4, 6] : 5 = false : 6 | |
[5, 5, 1] : 5 = false : 6 | |
[5, 5, 2] : 5 = false : 6 | |
[5, 5, 3] : 5 = false : 6 | |
[5, 5, 4] : 5 = false : 6 | |
[5, 5, 5] : 5 = false : 6 | |
[5, 5, 6] : 5 = false : 6 | |
[5, 6, 1] : 5 = false : 6 | |
[5, 6, 2] : 5 = false : 6 | |
[5, 6, 3] : 5 = false : 6 | |
[5, 6, 4] : 5 = false : 6 | |
[5, 6, 5] : 5 = false : 6 | |
[5, 6, 6] : 5 = false : 6 | |
[6, 1, 1] : 5 = false : 6 | |
[6, 1, 2] : 5 = false : 6 | |
[6, 1, 3] : 5 = false : 6 | |
[6, 1, 4] : 5 = false : 6 | |
[6, 1, 5] : 5 = false : 6 | |
[6, 1, 6] : 5 = false : 6 | |
[6, 2, 1] : 5 = false : 6 | |
[6, 2, 2] : 5 = false : 6 | |
[6, 2, 3] : 5 = false : 6 | |
[6, 2, 4] : 5 = false : 6 | |
[6, 2, 5] : 5 = false : 6 | |
[6, 2, 6] : 5 = false : 6 | |
[6, 3, 1] : 5 = false : 6 | |
[6, 3, 2] : 5 = false : 6 | |
[6, 3, 3] : 5 = false : 6 | |
[6, 3, 4] : 5 = false : 6 | |
[6, 3, 5] : 5 = false : 6 | |
[6, 3, 6] : 5 = false : 6 | |
[6, 4, 1] : 5 = false : 6 | |
[6, 4, 2] : 5 = false : 6 | |
[6, 4, 3] : 5 = false : 6 | |
[6, 4, 4] : 5 = false : 6 | |
[6, 4, 5] : 5 = false : 6 | |
[6, 4, 6] : 5 = false : 6 | |
[6, 5, 1] : 5 = false : 6 | |
[6, 5, 2] : 5 = false : 6 | |
[6, 5, 3] : 5 = false : 6 | |
[6, 5, 4] : 5 = false : 6 | |
[6, 5, 5] : 5 = false : 6 | |
[6, 5, 6] : 5 = false : 6 | |
[6, 6, 1] : 5 = false : 6 | |
[6, 6, 2] : 5 = false : 6 | |
[6, 6, 3] : 5 = false : 6 | |
[6, 6, 4] : 5 = false : 6 | |
[6, 6, 5] : 5 = false : 6 | |
[6, 6, 6] : 5 = false : 6 | |
6 / 216 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment