Wie viele Karten gibt es denn insgesamt? Gibt es insgesamt nur 13+2 Karten, oder gibt es Karten doppelt?
Also ich habe erst mal eine einfachere Variante ausgerechnet: Wie hoch ist die Wahrscheinlichkeit, dass man beim Ziehen von 5 Karten eine Summe von 26 legen kann? Dabei ist die Reihenfolge nicht berücksichtigt, d.h. die Karten werden alle in einem Rutsch gezogen, was der Startsituation entspricht.
Code:
# ruby
def calculatePropability(cards, n, remaining_sum)
if (n <= 0) || (cards.empty?)
return 0.0
end
propability = 0.0;
cards.each_with_index do |card, index|
# set of remaining cards
new_cards = cards.clone;
new_cards.delete_at(index);
new_remaining_sum = remaining_sum - card;
# we have won the game
if new_remaining_sum == 0
item_propability = 1.0
# we have lost the game
elsif new_remaining_sum < 0
item_propability = 0.0
else
item_propability = calculatePropability(new_cards, n-1, new_remaining_sum);
end
# add up partial propabilities
propability += (1.0/cards.count)*item_propability;
end
return propability;
end
cards = (1..13).to_a + [0,0]; # cards from 1 to 13, 2 jokers
n = 5;
sum = 26;
puts calculatePropability(cards, n, sum);
Nichts großartiges...
Die ausgegebene Wahrscheinlichkeit ist hier ungefähr 11.18%.
Wie gesagt, das Nachziehen ist nicht berücksichtigt, es wird nur ausgegeben, wie hoch die Wahrscheinlichkeit mit den 5 Start-Karten ist. Über das Nachziehen muss ich noch mal genauer nachdenken. Aber vielleicht ist der Algorithmus schon mal ein Ansatz...
Ich glaube, dass es letztendlich aber keine andere Berechnungsmöglichkeit gibt, als alle Möglichkeiten durchzuiterieren, sprich Bruteforce.