• [^] # Re: Code ?

    Posté par (site web personnel) . En réponse au journal Un article de "Pour la science" m'ayant amené à coder pour une petite vérification perso.... Évalué à 3.

    Il me semble que c'est celui de ce commentaire : https://linuxfr.org/users/fdf/journaux/un-article-de-pour-la-science-m-ayant-amener-a-coder-pour-une-petite-verification-perso#comment-1860111, mis à part le problème de virgule signalé au commentaire qui suit.

    Voici la version corrigée :

    #!/usr/bin/env python3
    from random import randint
    from statistics import mean, median, pstdev
    NB_PEOPLE = 500
    AMOUNT_START = 2000
    NB_LOOP = 5000000
    RATE = 0.2
    DRATE = 0.05
    def pays(customer, seller, base):
     # no advantage for the poorest as no poorest
     if seller == customer:
     customer -= base * RATE
     seller += base * RATE
     # poorest receive the money so add DRATE in the transfer
     elif seller > customer:
     customer -= base * (RATE + DRATE)
     seller += base * (RATE + DRATE)
     # poorest pay the money so deduct DRATE in the transfer
     else:
     customer -= base * (RATE - DRATE)
     seller += base * (RATE - DRATE)
     return seller, customer
    people = [AMOUNT_START] * NB_PEOPLE
    for _ in range(0, NB_LOOP):
     # select two random people
     a = randint(0, NB_PEOPLE - 1)
     b = randint(0, NB_PEOPLE - 1)
     base = min(people[a], people[b])
     people[a], people[b] = pays(people[a], people[b], base)
    # final, show the results
    people = sorted([int(p) for p in people])
    print(f"Last tranfert base: {base}.")
    print(f"people: {', '.join(str(p) for p in people)}")
    print(f"avg: {mean(people)} | median: {median(people)} | pstdev: {pstdev(people)}")

    On peut la tester ici : https://replit.com/@AtlasTK/LFR124926-cli-python (ça prend du temps avant que le résultat ne s'affiche).

    Et la version avec une GUI, pour pouvoir modifier les paramètres sans avoir à modifier le code source : https://replit.com/@AtlasTK/LFR124926-python.

    Zelbinium: pour la génération qui crée, pas celle qui scrolle...