Aller au contenu

Est-ce utile?  

9 membres ont voté

  1. 1. Est-ce utile?

    • Oui
    • Non
    • Wsh tt se ke tu fé c dla mair2 konar
    • Je suis neutre.


Messages recommandés

Posté(e)

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)

  • J'aime 3
Posté(e)
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à

Posté(e)
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

  • J'aime 1
  • 4 semaines aprè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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.