Partage
  • Partager sur Facebook
  • Partager sur Twitter

tirage aléatoire avec proportionnalité dans liste

plus souvent en début de table qu'à la fin

    11 décembre 2018 à 14:47:01

    Bonjour je sais pas trop comment poser la question et mettre un titre très clair.

    J'ai une table avec 250 items (des syllabes), je veux tirer au hasard dans la table mais:

    - les probabilités de tirer en début de table sont bcp plus fortes que de tirer à la fin parce que mes syllabes sont plus communes en début de tables et plus rares en fin de table.

    C'est de l'algo mais je vois pas bien... mes cours de maths sont très très loin...

    J'ai posé la question dans le forum js mais l'exemple donné est pour moi incompréhensible (fonctions fléchées).

    On me dit qu'il s'agit d'une fonction parabolique... je me souviens vaguement du dessin et ça me parait bien... mais vous pouvez simplement m'expliquer le principe, me donner l'équation? je tenterai d'écrire du code avec mes petites mains...

    merci infiniment

    • Partager sur Facebook
    • Partager sur Twitter
    Qui mange un noix de coco entière fait confiance à son anus
      11 décembre 2018 à 15:34:07

      Tu tires un nombre au hasard entre 1 et 62750. Par exemple k = 1000 ,  ou k = 1010 ou k = 1200

      Puis tu calcules racine carrée (k) ( donc K1 = 31.62 ou  31.78 ou 34.64 dans mes 3 exemples)

      Puis tu arrondis à l'entier le plus proche (K2 = 32 ou 32 ou 35 dans mes 3 exemples) 

      Ceci te donne un nombre forcément entre 1 et racine(62500) , c.a.d. 250. Mais parmi les 62500 tirages possibles, 1 a très peu de chance de sortir , alors que 250 a beaucoup de chances de sortir. C'est donc l'inverse de ce que tu recherches.

      Donc tu fais le complément à 250 : Resultat = 251-K2.

      Pourquoi 62750 au départ ?   parce que 62750 = 250.5 * 250.5, arrondi à l'entier le plus proche.

      K = random(62750)
      K1 = sqrt(k)
      K2 = round(k1)
      RESULTAT = 251-K2



      • Partager sur Facebook
      • Partager sur Twitter
        11 décembre 2018 à 16:25:55

        tbc92 a écrit:

        K = random(62750)
        K1 = sqrt(k)
        K2 = round(k1)
        RESULTAT = 251-K2

        Merci tbc92...

        c'est exactement ce que je voulais! et en plus j'ai compris!

        let tirage = 251 - Math.round(Math.sqrt(Math.random()*62750));



        -
        Edité par mrbbp 11 décembre 2018 à 16:29:08

        • Partager sur Facebook
        • Partager sur Twitter
        Qui mange un noix de coco entière fait confiance à son anus

        tirage aléatoire avec proportionnalité dans liste

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown