kumakuma215 Posté(e) le 4 février 2018 Posté(e) le 4 février 2018 Bon, premièrement, si vous savez pas ce que c'est une médiane ou un Quartile, je vous redirige ici : https://www.mathematiquesfaciles.com/mediane-et-quartiles_2_90935.htm Bref, voici le petit code que j'ai fait quand j'me faisais chier hehe. [spoiler=La fonction] function Mediane(type: text, t: text, p: player) :: text: set {_test::*} to {_t} split at "," set {_size} to (size of {_test::*}) loop {_size} times: #Vérification si la liste n'est faite que de nombres set {_test::%loop-value%} to "%{_test::%loop-value%}%" parsed as number if ({_test::%loop-value%} + 1) = 1: send "&cDésolé mais vous devez mettre des nombres." to {_p} stop set {_nbreloop} to 0 loop ({_size}-1) times: #Vérification si la liste est croissante set {_nbreloop2} to (loop-value + 1) set {_number1} to "%{_test::%{_nbreloop}%}%" parsed as number set {_number2} to "%{_test::%{_nbreloop2}%}%" parsed as number if {_number1} > {_number2}: send "&cVeuillez mettre une liste croissante!" to {_p} stop if "%{_type}%" is "Me": set {_sizetxt} to "%{_size}/2%" set {_nbreobj::*} to {_sizetxt} split at "." if (size of {_nbreobj::*}) = 2: set {_nbreobj::1} to "%{_nbreobj::1}%" parsed as integer set {_recupobj} to ({_nbreobj::1}+1) set {_t} to "%{_test::%{_recupobj}%}%" else: set {_sizetxt} to "%{_sizetxt}%" parsed as integer set {_nbre2} to ({_sizetxt}+1) set {_sizetxt} to "%{_test::%{_sizetxt}%}%" parsed as number set {_nbre2} to "%{_test::%{_nbre2}%}%" parsed as number set {_t} to (({_sizetxt}+{_nbre2})/2) send "&cLa médiane est %{_t}%" to {_p} else if "%{_type}%" is "Q1": set {_sizetxt} to "%{_size}/4%" set {_nbreobj::*} to {_sizetxt} split at "." if (size of {_nbreobj::*}) = 2: set {_sizetxt} to "%{_sizetxt}%" parsed as number set {_nbreobj::1} to "%{_nbreobj::1}%" parsed as number set {_sizetxt} to ({_nbreobj::1}+1) set {_t} to "%{_test::%{_sizetxt}%}%" else: set {_t} to "%{_test::%{_sizetxt}%}%" send "&cLe premier quartile est %{_t}%" to {_p} else if "%{_type}%" is "Q3": set {_sizetxt} to "%{_size}*(3/4)%" set {_nbreobj::*} to {_sizetxt} split at "." if (size of {_nbreobj::*}) = 2: set {_sizetxt} to "%{_sizetxt}%" parsed as number set {_nbreobj::1} to "%{_nbreobj::1}%" parsed as number set {_sizetxt} to ({_nbreobj::1}+1) set {_t} to "%{_test::%{_sizetxt}%}%" else: set {_t} to "%{_test::%{_sizetxt}%}%" send "&cLe premier quartile est %{_t}%" to {_p} set {_p} to "%{_p}'s UUID%" delete {test.%{_p}%} Bon, le code est pas si sorcier que ça, donc j'pense pas j'ai besoin de l'expliquer. Bref, là, vous vous demandez surement, mais comment on l'utilise? Voici un Skript bidon pour avoir un exemple de comment l'utiliser [spoiler=Le skript Bidon] command /test: trigger: if "%{test.%player's UUID%}%" is "<none>": set {test.%player's UUID%} to "true" stop else: delete {test.%player's UUID%} send "%{test.%player's UUID%}%" command /trolol: trigger: send "%{test.%player's UUID%}%" send "%{List::%sender's UUID%::*}%" delete {List::%sender's UUID%::*} on chat: if "%{test.%sender's UUID%}%" is "true": set {_msg} to message set {List::%sender's UUID%::*} to {_msg} split at ";" cancel event loop (size of {List::%sender's UUID%::*}) times: add 1 to {_nbreloop} set {List::%sender's UUID%::%{_nbreloop}%} to "%{List::%sender's UUID%::%{_nbreloop}%}%" parsed as integer if ({List::%sender's UUID%::%{_nbreloop}%} + 1) = 1: send "&cDésolé mais vous devez mettre des nombres." stop send "&cVeuillez désormais entrer &a""Me""&c, &a""Q1""&c ou &a""Q3""&c." send "&cMe = Médiane" send "&cQ1 = Quartile n°1 (environ 25%% des valeurs de la liste seront inférieures à cette valeur.)" send "&cQ3 = Quartile n°3 (environ 75%% des valeurs de la liste seront inférieures à cette valeur.)" set {test.%sender's UUID%} to "Choisir" stop if "%{test.%sender's UUID%}%" is "Choisir": cancel event if "%message%" is "Me": set {_test} to "%{List::%sender's UUID%::*}%" replace all " " in {_test} with "" replace all "and" in {_test} with "," send "&aCalcul de la Médiane en cours..." Mediane("Me", "%{_test}%", player) delete {test.%sender's UUID%} delete {List::%sender's UUID%::*} else if "%message%" is "Q1": set {_test} to "%{List::%sender's UUID%::*}%" replace all " " in {_test} with "" replace all "and" in {_test} with "," send "&aCalcul du 1er Quartile en cours..." Mediane("Q1", "%{_test}%", player) delete {test.%sender's UUID%} delete {List::%sender's UUID%::*} else if "%message%" is "Q3": set {_test} to "%{List::%sender's UUID%::*}%" replace all " " in {_test} with "" replace all "and" in {_test} with "," send "&aCalcul du 3e Quartile en cours..." Mediane("Q3", "%{_test}%", player) delete {test.%sender's UUID%} delete {List::%sender's UUID%::*} else: send "&cVeuillez écrire &a""Me""&c, &a""Q1""&c ou &a""Q3""&c." send "&cMe = Médiane" send "&cQ1 = Quartile n°1 (environ 25%% des valeurs de la liste seront inférieures à cette valeur.)" send "&cQ3 = Quartile n°3 (environ 75%%des valeurs de la liste seront inférieures à cette valeur.)" function Mediane(type: text, t: text, p: player) :: text: set {_test::*} to {_t} split at "," set {_size} to (size of {_test::*}) loop {_size} times: #Vérification si la liste n'est faite que de nombres set {_test::%loop-value%} to "%{_test::%loop-value%}%" parsed as number if ({_test::%loop-value%} + 1) = 1: send "&cDésolé mais vous devez mettre des nombres." to {_p} stop set {_nbreloop} to 0 loop ({_size}-1) times: #Vérification si la liste est croissante set {_nbreloop2} to (loop-value + 1) set {_number1} to "%{_test::%{_nbreloop}%}%" parsed as number set {_number2} to "%{_test::%{_nbreloop2}%}%" parsed as number if {_number1} > {_number2}: send "&cVeuillez mettre une liste croissante!" to {_p} stop if "%{_type}%" is "Me": set {_sizetxt} to "%{_size}/2%" set {_nbreobj::*} to {_sizetxt} split at "." if (size of {_nbreobj::*}) = 2: set {_nbreobj::1} to "%{_nbreobj::1}%" parsed as integer set {_recupobj} to ({_nbreobj::1}+1) set {_t} to "%{_test::%{_recupobj}%}%" else: set {_sizetxt} to "%{_sizetxt}%" parsed as integer set {_nbre2} to ({_sizetxt}+1) set {_sizetxt} to "%{_test::%{_sizetxt}%}%" parsed as number set {_nbre2} to "%{_test::%{_nbre2}%}%" parsed as number set {_t} to (({_sizetxt}+{_nbre2})/2) send "&cLa médiane est %{_t}%" to {_p} else if "%{_type}%" is "Q1": set {_sizetxt} to "%{_size}/4%" set {_nbreobj::*} to {_sizetxt} split at "." if (size of {_nbreobj::*}) = 2: set {_sizetxt} to "%{_sizetxt}%" parsed as number set {_nbreobj::1} to "%{_nbreobj::1}%" parsed as number set {_sizetxt} to ({_nbreobj::1}+1) set {_t} to "%{_test::%{_sizetxt}%}%" else: set {_t} to "%{_test::%{_sizetxt}%}%" send "&cLe premier quartile est %{_t}%" to {_p} else if "%{_type}%" is "Q3": set {_sizetxt} to "%{_size}*(3/4)%" set {_nbreobj::*} to {_sizetxt} split at "." if (size of {_nbreobj::*}) = 2: set {_sizetxt} to "%{_sizetxt}%" parsed as number set {_nbreobj::1} to "%{_nbreobj::1}%" parsed as number set {_sizetxt} to ({_nbreobj::1}+1) set {_t} to "%{_test::%{_sizetxt}%}%" else: set {_t} to "%{_test::%{_sizetxt}%}%" send "&cLe premier quartile est %{_t}%" to {_p} set {_p} to "%{_p}'s UUID%" delete {test.%{_p}%} PS: Le code n'est pas parfait et pas optimisé, donc si vous avez des remarques à me faire, n'hésitez pas (Par contre, les remarques sur le Skript bidon, ça sert à rien vu que ce skript en lui même sert à rien et n'est qu'un exemple) 3
Syst3ms Posté(e) le 4 février 2018 Posté(e) le 4 février 2018 Quartile n°3 (environ 75%% des valeurs de la liste seront inférieures à cette valeur.)" Ce serait pas plutôt 50% ? EDIT : ah non je comprends ce que tu veux dire par là
iLaZz Posté(e) le 4 février 2018 Posté(e) le 4 février 2018 Tu nous fais l'écart-type et la variance ? :p
kumakuma215 Posté(e) le 7 février 2018 Auteur Posté(e) le 7 février 2018 Pas encore fait, j'suis en 2nde donc je sais absolument pas de quoi tu parles @iLaZz :')
noftaly Posté(e) le 7 février 2018 Posté(e) le 7 février 2018 j'suis en 2nde j'en étais sur xDD Parce que j'ai aussi vu les quartiles ya pas longtemps, et j'avais hésiter à en faire un code xDD
iLaZz Posté(e) le 7 février 2018 Posté(e) le 7 février 2018 Je vais essayer l'écart-type et la variance alors :p
noftaly Posté(e) le 7 février 2018 Posté(e) le 7 février 2018 Je vais essayer l'écart-type et la variance alors :p en gros c'est quoi ?
iLaZz Posté(e) le 7 février 2018 Posté(e) le 7 février 2018 en gros c'est quoi ? Je serais pas trop dire, je sais juste le faire, j'ai une prof spéciale mais ça sert quand on veut comparer deux séries statistiques. EDIT: J'ai fais une commande pour calculer moyenne variance et écart-type command /calc <number = 100> [<integer = 1>] [<integer = 9>]: trigger: loop argument 1 times: add a random integer between argument 2 and argument 3 to {_int::*} loop all numbers between argument 2 and argument 3: loop all numbers between 1 and argument 1: if {_effectif.%loop-number-1%} is not set: set {_effectif.%loop-number-1%} to 0 if {_int::%loop-number-2%} is loop-number-1: add 1 to {_effectif.%loop-number-1%} clear {_int::%loop-number-2%} set {_ecc.%loop-number-1%} to ({_effectif.%loop-number-1%} / argument 1) * 100 send "Effectif(%loop-number-1%): %{_effectif.%loop-number-1%}%; Fréquence(%loop-number-1% en %%): %{_ecc.%loop-number-1%}%" to sender add {_ecc.%loop-number-1%} to {_total} send "ECC(ALL): %{_total}%; N: %argument 1%" to sender loop all numbers between argument 2 and argument 3: add loop-number * {_effectif.%loop-number%} to {_m} send "%nl%Moyenne: %{_m} / argument 1%" to sender loop all numbers between argument 2 and argument 3: add {_effectif.%loop-number%} * (loop-number * loop-number) to {_v} send "%nl%Variance: %{_v} / argument 1 - ({_m} / argument 1) * ({_m} / argument 1)%" to sender send "Ecart-Type: %sqrt({_v} / argument 1 - ({_m} / argument 1) * ({_m} / argument 1))%" to sender 1
ZixPlay_ Posté(e) le 3 mars 2018 Posté(e) le 3 mars 2018 Bonjour, Moi qui galére en mathèmatiques je ne préfére pas m'y aventurer ! Bonne continuation !
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant