Kansspel wielrennen

Moderators: dirkwb, Xilvo

Gebruikersavatar
Berichten: 2.351

Re: Kansspel wielrennen

In het wielrennen is het inderdaad wel belangrijk om risico's te nemen om een rit of klassieker te kunnen winnen, wat leidt tot een grote standaarddeviatie op de prestatie: als een gek naar beneden rijden van de Poggio met het risico op een valpartij en geen resultaat, op de Galibier al weggaan met het risico om ter plaatse gelaten te worden op Alpe d'Huez of in Parijs Roubaix wielen steken die het net houden, maar toch goed bollen. Om te kunnen winnen is het dikwijls alles of niks spelen.

Gebruikersavatar
Berichten: 2.351

Re: Kansspel wielrennen

Anteros schreef: ma 18 jul 2022, 11:34 @wnvl1 Ik kom er toch niet helemaal uit, ik neem aan dat je die 5 renners in een loop moet zetten van 20. Om zo tot het gewenste aantal van 100 te komen. Maar nu snap ik zeker bij het bovenste stukje code niet helemaal hoe ik dit vorm zou kunnen geven.
De bovenste formule wordt heel lang als je ze gebruikt voor 20 renners. Daarom zou het handig zijn ze dan op te stellen met een lus. Dan wordt de code merkelijk korter en flexibeler. Dat is wat ik bedoel.

Berichten: 23

Re: Kansspel wielrennen

@wnvl1 Dat was wat ik bedoelde inderdaad, dat ik 20x door die 5 renners moet loopen. Echter heb ik geen idee hoe ik dat zou moeten doen, zonder dat het een enorme formule wordt. Ik begreep trouwens ook niet helemaal waarom de renners en de kansen in een Python dictionary staan, is dat een vereiste voor die itertools.permutations ofzo?

Gebruikersavatar
Berichten: 2.351

Re: Kansspel wielrennen

Zo werkt de code met een variabel aantal renners. Je hoeft geen dictionary te gebruiken.

Code: Selecteer alles

import itertools
import matplotlib.pyplot as plt

dictKansenRenners = {
    "renner 1": 0.3,
    "renner 2": 0.25,
    "renner 3": 0.20,
    "renner 4": 0.15,
    "renner 5": 0.05,
    "renner 6": 0.05
}

listUitslagen = []

for i in list(itertools.permutations(dictKansenRenners.keys())):
    kans = 1
    for j in range(len(dictKansenRenners)):
        temp1 = 0
        for k in range(j,len(dictKansenRenners)):
            temp1 += dictKansenRenners[i[k]]
        kans = kans * dictKansenRenners[i[j]] / temp1
    listUitslagen.append([i, kans])

uitslagenRenner = [0]*len(dictKansenRenners)

fig, axs = plt.subplots(len(dictKansenRenners))

for index, renner in enumerate(dictKansenRenners.keys()):
    for i in listUitslagen:
        for j in range(len(dictKansenRenners)):
            if i[0][j] == renner:
                uitslagenRenner[j] += i[1]
    print(uitslagenRenner)

    # creating the bar plot
    axs[index].bar(range(1, len(dictKansenRenners)+1), uitslagenRenner, color='orange', width=0.4)

    axs[index].set_title(renner)

    uitslagenRenner = [0]*len(dictKansenRenners)

plt.show()

Reageer