Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tirage au sort avec pourcentage de chance sur item

    19 avril 2019 à 13:56:19

    Bonjour,

    j'ai une petite question math et je ne sais pas comment faire:

    Imaginons que j'ai un bouclier et que j'ai 5% de chance qu'une balle passe a travers et donc 95% de chance qu'il arrête la balle, comment on calcule cela ?

    Autre exemple:

    Si j'ai une liste d'items par exemple une épée a 1%, une pelle a 10% et une pioche a 15%... Comment on peut faire en sorte de que l'or d'un tirage ces items est plus de chance d'être tiré que d'autre ? Celui a 1% sera donc rare.

    J'ai cherché sur Google et j'ai pas trouvé grand chose, mais comme je sais pas comment cela s'appelle j'ai sans doute pas les bon mots clés.

    Je fais tout cela en Java, comme c'est des maths j'ai posté ici, j'espère que c'est le bon endroit.

    • Partager sur Facebook
    • Partager sur Twitter
      19 avril 2019 à 19:17:09

      Bonjour,

      Tout simplement, il faut que tu tires un nombre aléatoire entre 0 - 100. L'équivalent en Java de floor(random() * 100). Si le nombre est inférieur à 5, la balle traverse sinon elle est arrêté. C'est tout bête !

      Idem pour les items.

      Après la difficulté c'est plutôt de trouver un générateur de nombres pseudo-aléatoires suffisamment robuste. Je ne pense pas que la version native de Java excelle en la matière, c'est rarement le cas dans les différents langages.

      • Partager sur Facebook
      • Partager sur Twitter
        19 avril 2019 à 20:11:58

        Mais si je mets 0.5% ? ou si j'ai un item a 14% et un a 15% ? Je pensais faire comme tu dis, mais je trouve pas ça "fiable" comme façon de faire
        • Partager sur Facebook
        • Partager sur Twitter
          19 avril 2019 à 20:47:18

          Pour un flottant, tu peux diviser un grand nombre aléatoire : floor(random * 10000) / 100 fera l'affaire.

          Pour les items, ça dépend si tu veux un ET ou un OU. Par exemple sur le loot d'un adversaire, le joueur peut obtenir dans 15% des cas une dague et dans 20% une rapière alors soit tu décides que chaque élément est indépendant, ça veut qu'il peut trouver une dague et une rapière en même temps. Dans ce cas ce sont deux jets différents (que ce soit un dé ou un nombre pseudo aléatoire c'est pareil). Si c'est plutôt un OU, alors tu as deux solutions : soit réaliser une répartition sur tes 100%, entre 0% et 15% exclu c'est une dague et entre 15% et 35% c'est une rapière (ça augmente les chances d'en trouver), soit tu lances les deux dés de manière indépendante - entre 0% et 20% c'est un succès et alors tu départages pour savoir si c'est l'un ou l'autre en lançant un jet entre 0 et 35.

          Tu es libre de fixer les aléas. Ce qui est véritablement important c'est : l'algorithme utilisé pour générer ces nombres et l'équilibrage de ton loot.

          • Partager sur Facebook
          • Partager sur Twitter
            19 avril 2019 à 22:58:33

            Calculer floor(random()*100) et comparer au pourcentage voulu, c'est une façon de faire. Mais ça a un léger biais. Au lieu d'une probabilité de 5% par exemple, tu auras une probabilité de 5.5%.

            Et tu ne peux pas gérer les probabilités comme 0.5%.

            En fait, tu peux faire plus simple :

            Procedure ok_random  (seuil)  //  Seuil est le seuil en pourcentage ; seuil = 5 ou 0.5 dans les 2 exemples évoqués. 
            if random() < seuil/100 then return true
            return false





            -
            Edité par tbc92 19 avril 2019 à 22:58:50

            • Partager sur Facebook
            • Partager sur Twitter
              20 avril 2019 à 17:38:40

              Procedure ok_random  (seuil) 

              C'est générer le nombre aléatoire ? moi je code avec  les {

              • Partager sur Facebook
              • Partager sur Twitter
                20 avril 2019 à 20:01:04

                Sur la syntaxe, il y a certainement des corrections à apporter.
                • Partager sur Facebook
                • Partager sur Twitter

                Tirage au sort avec pourcentage de chance sur item

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                • Editeur
                • Markdown