Bij (bord)spellen wordt vaak een worp van meerdere dobbelstenen gebruikt voor een of andere score. Nu leek het me interessant om de kansverdeling hiervan te berekenen. Ik heb dus in python een simpel scriptje geschreven dat door alle mogelijke permutaties van de dobbelstenen gaat en telt hoe vaak elke som voorkomt.
Voor een paar dobbelstenen werkt dit prima, maar het aantal permutaties loopt al snel uit de klauwen; 10d6 (10 dobbelstenen met 6 zijden) is al 6^10 ~ 60 miljoen permutaties. Uiteraard kan ik gewoon een aantal worpen simuleren (~500k lukt prima op mijn oude laptopje), maar dan is het resultaat niet exact. Gelukkig vond ik een betere methode, nl. met de discrete convolutie (zie hier). Hiermee kan ik binnen een fractie van de tijd exacte resultaten vinden.
Echter, soms zie je iets als: gooi 5 dobbelstenen en kies de 3 beste. Hiervan wil ik ook de kansverdeling kunnen berekenen. Met de eerste methode lukt dat prima, maar ik wil het ook graag op een efficiente manier doen. Ik heb er over nagedacht, maar volgens mij kan dit niet m.b.v. de convolutie. Zijn er nog andere manieren om dit probleem aan te pakken?