#!/usr/bin/env python3fromrandomimportrandintfromstatisticsimportmean,median,pstdevNB_PEOPLE=500AMOUNT_START=2000NB_LOOP=5000000RATE=0.2DRATE=0.05defpays(customer,seller,base):# no advantage for the poorest as no poorestifseller==customer:customer-=base*RATEseller+=base*RATE# poorest receive the money so add DRATE in the transferelifseller>customer:customer-=base*(RATE+DRATE)seller+=base*(RATE+DRATE)# poorest pay the money so deduct DRATE in the transferelse:customer-=base*(RATE-DRATE)seller+=base*(RATE-DRATE)returnseller,customerpeople=[AMOUNT_START]*NB_PEOPLEfor_inrange(0,NB_LOOP):# select two random peoplea=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 resultspeople=sorted([int(p)forpinpeople])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)}")
[^] # Re: Code ?
Posté par Claude SIMON (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 :
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...