header
Accueil
Règles
Les 5 Races
Histoire
Classements
Forums
Inscriptions
Jouer son Trõll
Packs Graphiques
Goodies
Nous Contacter
Soutenir le Jeu.
Notre Boutique.
Liens
Webring
Crédits
 
  Ze Figurines
figurines
 MountyHall
Référencé sur
Tour de Jeu
Ludimail
Jeux Alternatif
 
HG
Nous sommes le 19° jour de la Limace du 24° cycle après Ragnarok
HM HD
 
 
BG     BD
 Bienvenue Invité     S'enregistrer    Connexion Search the Forum   Display List of Forum Members
Forums Tous les Forums
ligne Forum Des Questions ?
DON MountyHall
Modérateurs de ce forum : Aghabeu, Dabihul, Grankausto, Loinvu, Madère, Mamoune, Modérateur 6, Modérateur1, Modérateur2, Modérateur3, Modérateur4, Modérateur5, Mr x, Rouletabille, Schtroumpf, TilK, VYS, Xaruth

Avant de poster, merci de vérifier que la réponse à votre question ne se trouve

N'hésitez pas également à utiliser le moteur de recherche du forum qui vous permettra de trouver si la question a déjà été abordée.

Les joueurs de MountyHall ont regroupé des montagnes d'informations sur le jeu dans l'encyclopédie MountyPedia. Il serait bon de la consulter avant de poser une question dans ce forum.


Version imprimable

#. Message de Pandanlagl le 25-05-2003 à 10:24
  [Ami de MountyHall]
1287 - ( )
Pays: Belgium  Inscrit le : 01-10-2002  Messages: 204 (Golem Costaud)   Citer Citer

J'ai glue depuis peu et ce matin j'ai fait un essai pour la 32eme fois: raté... Je suis a 33%, j'ai donc fait le 2eme lance 9 fois au dessus de mon %. Il y a une chance sur 5,328 de faire un série pareille.

Ce sujet revient régulierement et il y a deja eu pas mal de corrections. J'ai la tres forte impression que la distribution des valeurs du D100 autour de la moyenne est plus forte qu'au extrémités. D'ou ma question à l'équipe de développement.

  • Est-ce que le calcul de résultat est écrit pour tout les jets ou chaque jet correspond a une ligne particuliere du code?
  • Avez-vous essayez d'utiliser la formule de calcul du résultat sur la machine du jeu pour lancer 50 ou 100 mille D et vérifier la répartition des résultats? Cela revient à valider que la formule donne bien un D100, binomiale si je me souviens et pas une gaussienne par exemple.

Pandanlagl moine de l'assombrissement.


#. Message de Karl Marsque le 25-05-2003 à 12:04
6539 - ( )
Pays: France  Inscrit le : 22-05-2003  Messages: 1564 (Trõll de Compèt')   Citer Citer
Il serait aussi peut être plus "efficace" d'avoir une graine de générateur aléatoire par trõll et de l'utiliser/mettre à jour pour les jets de celui-ci (et seulement celui-ci).

Cela impliquerait de ne pas utiliser la fonction rand classique (qui est, d'après mon expérience, assez peu conseillée pour des projets l'utilisant fortement) et d'utiliser à la place une autre peut être un plus couteuse en temps cpu.

Le générateur aléatoire que j'utilise quand le temps pris n'est pas critique utilise 2 rand(), une soustraction, une multiplication et une division mais il n'est absolument pas optimisé et il en existe des beaucoup moins couteux...

Il faudrait aussi du coup stocker une variable (float) de plus par trõll mais je ne pense pas que ce soit le plus gros problème.

Sinus

#. Message de Bulzor le 25-05-2003 à 12:09
  [Ami de MountyHall]
4362 - ( )
Pays: France  Inscrit le : 14-01-2003  Messages: 357 (Golem Costaud)   Citer Citer

Moi je comfirme, je ne pense pas qu'il y ai un probleme dans la moyenne, mais la répartition des chiffres de 0 a 100.. .je m'explique:

J'ai marque tout les résultats, et je trouve 27 chiffres compris entre 91 et 100 sur un totale de 130 chiffres, or statistiquement je devrais en avoir a peu pret 13... et pour info j'ai un moyenne de 57,3 au lieu de 49,6.

Bulzor (qui veut pas non plus énervé l'équipe parce que sa doit etre lourd a force...)


#. Message de Avnohfir le 25-05-2003 à 14:03
101662 - Калинка (Tomawak 39)
- Peuplade de les Ouestrolls -
Pays: Neutral Zone  Inscrit le : 16-02-2003  Messages: 4666 (Djinn Tonique)   Citer Citer
Heu moi ça n'est pas le cas, mes échecs sont plutôt rare, et j'ai assez souvent des jets proches de 0. Le hasard c'est une suite chaotique, donc pas nécessairement uniformément répartie. D'ailleurs on remarque que Padlang et Bulzor se contredisent tout les deux. Vous n'avez pas de chance c'est tout.

#. Message de Pandanlagl le 25-05-2003 à 14:26
  [Ami de MountyHall]
1287 - ( )
Pays: Belgium  Inscrit le : 01-10-2002  Messages: 204 (Golem Costaud)   Citer Citer

Moi je réussi trop les grosse comp/sortilege et je rate trop les petites...

Je ne vois pas le lien avec un phénomene chaotique. Je suppose que tu veux dire que le nombre d'échec précédant un jet ne change pas la proba de celui-ci, par contre la probabilité de n échecs d'affilées diminue avec n en exponentielle.

Ma question sur 100 mille jet permetrait de faire un bête graphe avec en x le résultat (01 à 100) et en y le nombre d'occurence. En théorie, pour un dé c'est très proche d'une droite horizontale (100,000 jet => y=1000). Si on obtient un cloche de Gauss ou une Poisson, le dé est pipé.

C'est peut-être du pinaillage mais cela ne devrait pas prendre énormément de temps à faire. Ensuite de deux chose l'une, ou je suis vraiment malchanceux avec glue, ou il faut remodeler le(s) dé(s).

Pandanlagl, moine de St-Thomas


#. Message de Ghorghor Bey le 25-05-2003 à 14:46
  [MH Team]   [Main Gauche - Main Droite]  [Ami de MountyHall]
111 - Ghorghor Bey (Durakuir 33)
Pays: Belgium  Inscrit le : 22-05-2002  Messages: 6097 (Hydre Fumante)   Citer Citer

Voilà pour faire les tests, si vous avez du temps à perdre :

function f_RollSomeDices($ai_NbDe,$ai_NbFace=1)
{
 mt_srand((double)microtime()*1000000);
 if ($ai_NbFace == 1)
 {
  $li_Roll = $ai_NbDe;
 }
 else
 {
  $li_Roll=0;
  for ($i=1; $i<=$ai_NbDe; $i=$i+1)
  {
   $li_Roll = $li_Roll + rand(1,$ai_NbFace);
  }
 }
 return $li_Roll;
}

Si y'a d'autres complaintes, proposez des solutions...

Ghorghor.


#. Message de Pandanlagl le 25-05-2003 à 14:50
  [Ami de MountyHall]
1287 - ( )
Pays: Belgium  Inscrit le : 01-10-2002  Messages: 204 (Golem Costaud)   Citer Citer
Merci GGB

#. Message de Karl Marsque le 25-05-2003 à 16:26
6539 - ( )
Pays: France  Inscrit le : 22-05-2003  Messages: 1564 (Trõll de Compèt')   Citer Citer
Visiblement, tu utilise l'algorithme de Mersenne Twister qui semble être intégré à PHP pour l'initialisation de la graine (mt_srand) mais pas pour le tirage aléatoire lui même.

Il faudrait peut être utiliser mt_rand() au lieu de rand(), non ?

Sinus

#. Message de FulJakhal le 25-05-2003 à 16:32
108706 - GorgonZolla (Tomawak 60)
- Les Affamés du Donjon -
Pays: Seychelles  Inscrit le : 15-02-2003  Messages: 544 (Shaï Epileptique)   Citer Citer
1. si on initialise avec mt_srand, il serait logique d'utiliser mt_rand et pas le rand classique qui n'est donc pas initialisé, non ?

2. Le mieux serait d'initialiser au minimum, appeler mt_srand une fois à chaque script et non pas à chaque tirage de dé. L'idéal serait d'avoir un générateur hors des scripts, une sorte de serveur de hasard, mais niveau développement, c'est hors de question j'imagine.

3. Trouver une meilleure source d'entropie que microtime() (qui doit dépendre énormément de l'OS), mais même remarque qu'au dessus, ça doit pas être facile

4. Je mettrais un (gros) nombre premier à la place d'une puissance de 10 histoire de palier (comme on peut) les défauts de microtime()


Le point 1 semble être une erreur/un oubli. Le reste, pour ce qu'on lui demande au générateur, pas besoin de pousser non plus.

De toutes façons aléatoire != homogène, alors si une méthode va rendre un troll malchanceux un jour, une autre méthode rendra alors un autre troll malheureux... À plusieurs milliers de trolls, c'est normal d'avoir une dizaine de trolls pas chanceux par jour. S'il y avait vraiment un problème, on verrait beaucoup plus de monde se plaindre sur le forum... Bref le nombre de personnes se plaignant semble indiquer que la distribution globale est bonne

#. Message de deTroy le 25-05-2003 à 20:23
  [Gardien du Savoir]  [Ami de MountyHall]
1309 - ( )
Pays: Belgium  Inscrit le : 17-08-2002  Messages: 2129 (Djinn Tonique)   Citer Citer

Ghoghor,

Tu programmes à l'américaine que tu mets des dollars partout ?

 

       deTroy, Gardien du Savoir (*Oui, je sais, je sors*)


#. Message de VYS le 26-05-2003 à 08:59
  [MH Team]   [Grand Créateur]  [Ami de MountyHall]
175 - Tarash Tagueule (Kastar 42)
- Lonely Trollboy -
Pays: Belgique (Liège)  Inscrit le : 29-06-2001  Messages: 15184 (Liche Ancestrale)   Citer Citer

Je ne comprend pas : La discussion avait eu lieu il y a déjà qq temps et voici la fonction que j'avais programmée en son temps :

function f_RollDice($ai_NbFace)
{
  $li_roll=mt_rand(1,$ai_NbFace);
  return $li_roll;
}

function f_RollSomeDices($ai_NbDe,$ai_NbFace=1,$ai_Bonus=0)
{
  if ($ai_NbFace == 1)
 {
  $li_Roll = $ai_NbDe + $ai_Bonus;
 }
 else
 {
  $li_Roll=$ai_Bonus;
  for ($i=1; $i<=$ai_NbDe; $i=$i+1)
  {
   $li_Roll = $li_Roll + f_RollDice($ai_NbFace);
  }
 }
 return $li_Roll;
}

Et donc utilisation de mt_rand et pas de génération de seed à chaque appel, ca ne sert à rien.

http://www.jeuxweb.org/mountyhall/Forum/display_topic_threads.php?ForumID=3&TopicID=5332&PagePosition=4

VYS - DungeonMaster qui s'interroge


#. Message de Karl Marsque le 26-05-2003 à 13:17
6539 - ( )
Pays: France  Inscrit le : 22-05-2003  Messages: 1564 (Trõll de Compèt')   Citer Citer
Comme c'est bien mersenne twister (mt_rand) qui est utilisé, il n'y a pas de raisons pour que cela ne fonctionne pas correctement, c'est un des meilleurs générateurs aléatoires disponibles, et en plus il utilise assez peu de ressources.

Effectivement, il ne faut absolument pas générer de graine à chaque fois. Cela détruit tout l'intérêt de mt_rand (mersenne twister a une période de 2**19937-1).

Il faut donc générer une graine assez rarement, tous les x jours peut être ?

Et lors de la génération de la graine, autant utiliser une fonction qui donne une plus grande précision que microtime()*1000000.

Une petite recherche google donne une bonne fonction d'initialisation :

function mkseed()
{
   return hexdec(substr(md5(microtime()), -) & 0x7fffffff;
}

puis :
mt_srand(mkseed());

Il y a plus de détails sur <a href="http://www.php.net/manual/en/function.mt-srand.php">http://www.php.net/manual/en/function.mt-srand.php</a>

Sinon, je ne connais pas vraiment PHP, mais pourquoi passer par une variable intermédiaire dans f_RollDice ?

Faire :

function f_RollDice($ai_NbFace)
{
  return mt_rand(1,$ai_NbFace);
}

ou encore utiliser mt_rand directement serait peut être un chouhia plus efficace ?

Mais bon, tout ça reste de la diptérosodomie a priori, ça a l'air de bien marcher pour l'instant malgré tout .

Sinus

#. Message de GuigZ le 26-05-2003 à 14:30
3354 - Ghorgor (Skrim 45)
- Les Trolls de l'Hébriété -
Pays: France  Inscrit le : 11-03-2003  Messages: 387 (Golem Costaud)   Citer Citer
j'aurais plutôt appelé ça de la quadricapillisection...

Pages : [1]

Pour poster une réponse sur ce Forum, vous devez d'abord vous connecter

Si vous n'êtes pas encore enregistré, vous devez d'abord vous inscrire.

 Changer de Forum
[ Contact : ] - [ Heure Serveur : 11:10:01 le 12/02/2026 ] - [ Page générée en 0.004 sec. ]