Penney Ante is een gokspel waarbij twee spelers elk een verschillende, maar even lange reeks van opeenvolgende worpen met een muntstuk kiezen. Bijvoorbeeld kop-kop-munt of kortweg KKM. Daarna wordt herhaaldelijk een muntstuk opgeworpen, totdat één van de twee gekozen reeksen wordt waargenomen. De speler die deze reeks gekozen heeft, wint het spel.
Bestaat er een strategie die de ene speler een grotere kans geeft om te winnen dan de andere speler? Vreemd genoeg bestaat die wel degelijk. John Conway vond zelfs een eenvoudige manier om de kans te berekenen dat een gekozen reeks zal winnen tegen een andere reeks. We leggen het algoritme hier uit voor tripletten (reeksen van lengte drie), maar het is algemeen toepasbaar voor reeksen van willekeurige lengte, zelfs voor reeksen van verschillende lengte.
Eerst plaatsen we de twee tripletten onder elkaar, waarbij de letters op corresponderende posities netjes onder elkaar uitgelijnd worden. We hebben dit hieronder gedaan voor de twee tripletten MKK en KKK. We vergelijken nu de twee tripletten: als ze gelijk zijn, dan plaatsen we een 1 boven de eerste letter van de eerste reeks, anders plaatsen we een 0.
0 MKK KKK
Vervolgens verwijderen we de eerste letter van het bovenste triplet, en schuiven de overige letters één positie naar links, waardoor de beginletters weer netjes onder elkaar komen te staan. Daarna vergelijken we de twee letters van de bovenste reeks met de eerste twee letters van de onderste reeks: als ze gelijk zijn, dan plaatsen we een 1 boven de eerste letter van de eerste reeks, anders plaatsen we een 0.
1 KK KKK
We blijven deze procedure herhalen tot en met de laatste letter van de bovenste reeks, waarbij we telkens de resterende letters van de bovenste reeks vergelijken met evenveel letters aan het begin van de onderste reeks (als de onderste reeks minder letters heeft dan de bovenste reeks, dan schrijven we per definitie een 0).
1 K KKK
Finaal schrijven we alle bekomen enen en nullen achter elkaar, wat op de volgende manier kan voorgesteld worden:
011 MKK KKK
De resulterende reeks van enen en nullen noemen we een bitreeks. Deze bitreeks is een maat voor de graad van overlap tussen de twee reeksen van opeenvolgende worpen, en kan geïnterpreteerd worden als een binair getal. In bovenstaand voorbeeld bekwamen we de bitreeks 011, wat als binair getal gelijk is aan de decimale waarde 3.
De bitreeksen zoals we die hierboven hebben leren bepalen, kunnen we nu
gebruiken om de kansverhouding te berekenen voor twee gegeven reeksen
111 000 A:KKK A:KKK A:KKK B:MKK 100 011 B:MKK B:MKK B:MKK A:KKK
Als we deze bitreeksen omzetten naar hun decimale waarden (het binaire
getal 111 is gelijk aan 7, het binaire getal 000
is gelijk aan 0, het binaire getal 100 is gelijk aan 4 en
het binaire getal 011 is gelijk aan 3) en invullen in
bovenstaande vergelijkingen, dan krijgen we dat
Als we de kans dat reeks
In deze opgave stellen we de uitkomst van een worp met een muntstuk voor door een hoofdletter: K voor kop en M voor munt. Op die manier kunnen we een reeks opeenvolgende worpen voorstellen als een string die enkel bestaat uit de letters K en M. Gevraagd wordt:
Schrijf een functie winnaar waaraan drie argumenten moeten doorgegeven worden. De eerste twee argumenten stellen de reeksen opeenvolgende worpen voor die door de twee spelers van een spelletje Penney Ante werden gekozen. Het derde argument is de reeks opeenvolgende worpen die we effectief met een muntstuk geworpen hebben. De functie moet de waarde 1 teruggeven als de eerste gekozen reeks (eerste argument) het spelletje Penney Ante wint, de waarde 2 als de tweede gekozen reeks (tweede argument) het spelletje wint, en de waarde 0 als geen enkele reeks het spelletje wint omdat ze beide niet worden waargenomen in de reeks opeenvolgende worpen die als derde argument werd doorgegeven. Indien de eerste twee argumenten gelijk zijn, dan moet de functie een AssertionError opwerpen met de boodschap reeksen mogen niet gelijk zijn. Indien de eerste twee argumenten niet even lang zijn, dan moet de functie een AssertionError opwerpen met de boodschap reeksen moeten zelfde lengte hebben.
Schrijf een functie bitreeks waaraan twee reeksen van
worpen
Schrijf een functie kansverhouding waaraan twee reeksen
van worpen
In Python kan je de ingebouwde functie int gebruiken om de stringvoorstelling van een binair getal om te zetten naar de corresponderende decimale waarde. Deze functie beschikt immers over een tweede optionele parameter (standaardwaarde: 10) waaraan je het grondtal kan doorgeven van het getal waarvan de stringvoorstelling als eerste argument aan functie wordt doorgegeven.
>>> int('011', 2) 3
Schrijf een functie kansen waaraan twee reeksen van
worpen
De twee reeksen van worpen die aan de functies bitreeks, kansverhouding en kansen worden doorgegeven, hoeven niet even lang te zijn en mogen ook gelijk zijn.
>>> winnaar('KKK', 'MKK', 'KMKMKKKKMKKKMMMMKMKK') 2 >>> winnaar('MKM', 'MMK', 'KMKMKKKKMKKKMMMMKMKK') 1 >>> winnaar('MKK', 'KKM', 'KKKKKKKKKKKKKKKKKKKK') 0 >>> winnaar('MKK', 'MKK', 'KKKKKKKKKKKKKKKKKKKK') Traceback (most recent call last): AssertionError: reeksen mogen niet gelijk zijn >>> winnaar('MKKM', 'MKK', 'KKKKKKKKKKKKKKKKKKKK') Traceback (most recent call last): AssertionError: reeksen moeten zelfde lengte hebben >>> bitreeks('KKK', 'MKK') '000' >>> bitreeks('MKM', 'MMK') '001' >>> bitreeks('MKK', 'KKM') '011' >>> kansverhouding('KKK', 'MKK') (1, 7) >>> kansverhouding('MKM', 'MMK') (1, 2) >>> kansverhouding('MKK', 'KKM') (3, 1) >>> kansen('KKK', 'MKK') (0.125, 0.875) >>> kansen('MKM', 'MMK') (0.3333333333333333, 0.6666666666666666) >>> kansen('MKK', 'KKM') (0.75, 0.25)
Collins S (1982). Coin sequence probabilities and paradoxes. Bulletin of the Institute of Mathematics and its Applications 18, 227-232.
Felix D (2006). Optimal Penney Ante strategy via correlation polynomial identities. The Electronic Journal of Combinatorics 13. 1
Gardner M (1974). On the paradoxical situations that arise from nontransitive relations. Scientific American 231(4), 120-125.
Gardner M (1988). Time travel and other mathematical bewilderments. W.H. Freeman, 55-69. 2
Nickerson RS (2007). Penney Ante: Counterintuitive probabilities in coin tossing. The UMAP journal 28(4), 503-532. 3
Nishiyama Y (2010). Pattern matching probabilities and paradoxes as a new variation on Penney's coin game. International Journal of Pure and Applied Mathematics 59(3), 357-366. 4
Nishiyama Y, Humble S (2014). Winning odds. Plus Magazine 55. 5
Penney W (1975). Problem 95: penney-ante. Journal of Recreational Mathematics 7(4), 3217.