IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Randomisation pondérée ? (jeu de hasard)


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 57
    Points : 35
    Points
    35
    Par défaut Randomisation pondérée ? (jeu de hasard)
    Bonjour,

    J'aimerais trouver un moyen pour réaliser un "duel" entre deux entités.

    Imaginons deux joueurs dans un jeu de rôle. L'un a un niveau x, l'autre y. S'ils font un duel, il est évident que celui qui a le meilleur niveau l'emportera le plus souvent, mais j'aimerais qu'il y ai une part non négligeable de hasard. Le problême c'est que j'ai essayé plein de méthodes, et je ne trouve pas quelque chose de vraiment intéressant... Dans la plupart des cas, la part de hasard est vraiment trop grande... ce qui donne du 50/50.

    Y a-t-il un algorithme connu pour ce genre de problème ? Ca fait deux jours que je cherche sur le net et je n'arrive à rien. Je ne dois pas avoir les bons mots clés...

    Quelqu'un aurait une piste à me faire suivre ?

    Merci d'avance.

    PS: je pense que la piste principale à suivre est la différence entre les deux niveaux.

  2. #2
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut
    bien le bonjour,

    une methode assez repandue pour ce genre de choses est de creer une roulette. Le principe est tres simple, tu definis des secteurs de ta roue proportionnellement aux probabilites de chacun des joueurs et tu tournes ta roue. Donc par exemple dans ton cas, le meilleur joueur a 200 degres de la roulette et l'autre a les 160 autres degres.

    mots cles : algorithme, roulette

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    Merci ! Je vais regarder ça !

  4. #4
    Membre habitué Avatar de Marco85
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 210
    Points : 187
    Points
    187
    Par défaut
    +1 Merci ... Je me posais la même question et je trouve la réponse très sensée ...

    Merci aussi (même si je n'ai pas posé la question) ...
    If you cannot explain a concept to a six year-old, then you do not fully understand it. [Albert Einstein]

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    Je suis en train de la tester en ce moment même, et ça me paraît même être une excellente idée ! C'est exactement ce que je cherchais, merci !

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Mai 2002
    Messages : 114
    Points : 156
    Points
    156
    Par défaut
    C'est en effet une bonne méthode. Personnelement je la représente sous la forme d'un segment [0;1[ sur lequel tu place un point.

    Exemple pour des niveaux A et B : Tu fais un rand entre 0 et 1. Si le résultat est inférieur à A/(A+B), alors A gagne, sinon (B perd non je rigole) B gagne.

    Ceci suppose que ton rand soit (arf! j'ai perdu le nom, quand tu as autant de chance d'avoir un nombre plutôt qu'un autre, c'est equi quelque chose il me semble). Mais tu peux l'adapter pour des répartitions gaussienne ou autre.

    Si tu veux augmenter la part donné au niveau et réduire la part de chance, tu peux aussi essayer A²/(A²+B²).

    Exemple : A = 25 et B = 75.
    Avec une pondération linéaire, A/(A+B)=0.75 ==> B a 3 chances sur 4 de l'emporter.
    Avec une pondération des carrés, A²/(A²+B²)=0.1 ==> B a 9 chances sur 10 de l'emporter.

    Exemple : A = 40 et B = 60.
    Avec une pondération linéaire, A/(A+B)=0.4 ==> B a 6 chances sur 10 de l'emporter.
    Avec une pondération des carrés, A²/(A²+B²)=~0.3 ==> B a 7 chances sur 10 de l'emporter.

    Tu peux ainsi jouer simplement sur la quantité de hasard dans l'issue du combat.

    A noter que tu peux aussi utiliser les racines carrés (ou nième) des performances de tes joueurs, cela produira l'effet inverse du carrée ==> La part de chance sera plus importante.

  7. #7
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut
    Citation Envoyé par Teuchteu
    Ceci suppose que ton rand soit (arf! j'ai perdu le nom, quand tu as autant de chance d'avoir un nombre plutôt qu'un autre, c'est equi quelque chose il me semble).
    équiprobable.

    L'idée des pondérations peut fonctionner et permet de faire des réglages très fins. Faire néanmoins attention à ce que la somme de toutes les probas soit toujours égale à 1, ce qui n'est pas forcément facile à respecter en utilisant des racines enièmes ou autres.

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    cela ne pose aucin problème si on transpose dans un intervalle [0,1]
    Elle est pas belle la vie ?

  9. #9
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Tu peux aussi faire comme dans Advanced Dungeons & Dragons (AD&D) avec des jets de dé.

    Par exemple pour toucher quelqu'un il faut obtenir un score supérieur à une certaine valeur.

  10. #10
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Citation Envoyé par khayyam90
    une methode assez repandue pour ce genre de choses est de creer une roulette. Le principe est tres simple, tu definis des secteurs de ta roue proportionnellement aux probabilites de chacun des joueurs et tu tournes ta roue. Donc par exemple dans ton cas, le meilleur joueur a 200 degres de la roulette et l'autre a les 160 autres degres.
    Oui, comme présenté sur ton site web pour les algos génétiques : http://khayyam.developpez.com/articl...enetic/#L3.1.1
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  11. #11
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Toutes ces techniques reviennent à la même chose... Juste sous une forme différente avec plus ou moins de souplesse, La méthode de Teuchteu est celle qui est la plus souple.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Jeu de hasard
    Par Kestion100 dans le forum Excel
    Réponses: 0
    Dernier message: 13/06/2012, 11h15
  2. Quel style de DirectX pour un jeu 2D ?
    Par delire8 dans le forum DirectX
    Réponses: 34
    Dernier message: 31/07/2003, 00h47
  3. [C réseau débutant] jeu
    Par Heimdall dans le forum Développement
    Réponses: 6
    Dernier message: 22/05/2003, 13h58
  4. Une déclaration pour la survie du jeu vidéo en France
    Par Freakazoid dans le forum DirectX
    Réponses: 1
    Dernier message: 30/10/2002, 14h31
  5. Algorithme de randomisation ... ( Hasard ...? )
    Par Anonymous dans le forum Assembleur
    Réponses: 8
    Dernier message: 06/09/2002, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo