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 T-Shirt
T-shirt
 MountyHall
Référencé sur
Tour de Jeu
Ludimail
Jeux Alternatif
 
HG
Nous sommes le 16° jour du Gnu 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 Bug Reporting
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

Tous les bugs référencés par l'équipe MountyHall sont préfixés par ce petit logo

Avant de poster dans Bug Reporting :

1/ Commentez...le bug en mentionnant le plus d'éléments du jeu
2/ Vérifiez........que personne n'a déjà signalé le Bug que vous avez remarqué !
3/ Exposez.........le bug dès le début de votre message grace à un titre explicite
4/ Appliquez... les règles suivantes :
  • Un bug = Un sujet : Si vous avez plusieurs problèmes, ouvrez plusieurs sujets.
  • Si le Bug concerne un Trõll, un objet, un monstre, un lieu, une guilde en particulier, signalez son numéro .
  • Si le Bug survient sur une page, donnez son nom et le lien (URL complète) qui y mène
  • Donnez et datez votre scénario qui a mené à l'erreur
  • Si un message d'erreur apparait, recopier la partie pertinente dans votre message.
  • Donnez la version du jeu (visible dans vos messages bot).
  • Si vous avez un problème d'accès au jeu ou à certaines pages, signalez votre OS, votre navigateur et votre FAI.
  • S'il s'agit d'un bug sérieux concernant la sécurité ou un backdoor éventuel, ne le postez pas ici, envoyez-moi un mail

5/ Patientez..... le forum est activement surveillé par les développeurs qui font leur possible pour intervenir et corriger rapidement le bug signalé. Laissez leur le temps de s'intéresser à votre problème.


Version imprimable

#. Message de TapRaclOthLath le 04-03-2003 à 13:34
6427 - ( )
Pays: France  Inscrit le : 06-02-2003  Messages: 461 (Golem Costaud)   Citer Citer
Plusieurs sujets sont des plaintes de joueurs sur leur malchance...
On peut imaginer deux explications :
a) C'est normal, sur 3000 trolls qui jouent deux fois par tour il peut il y avoir plusieurs évennement avec une probabilité de 1/1000 chaque jour
b) Comme pour tout programme l'aléatoire dans MH n'est pas de l'aléatoire mais du pseudo aléatoire. Et là on peut imaginer qu'il soit tellement pseudo qu'il ne soit plus vraiment aléatoire... Mais ça aucun joueur ne peut le vérifier, il faut regarder le code du programme.
On peut quand même imaginer : je suppose qu'en PHP il existe une fonction rnd, rand qui donne un nombre entre 0 et 1 et que celle là qui est utilisée. Je suppose qu'il existe aussi un fonction d'initialisation de la fonction aléatoire et que celle-ci accepte un paramètre. Si c'est le cas le choix du paramètre peut s'il est mal choisi rendre l'aléatoire totalement prévisible.
Par exemple s'il prend en compte la DLA, c'est un mauvaise chose, à la base la DLA varie de douze heures pile et même avec les bonus/malus le nombre de secondes de la DLA ne change jamais. Trop de constantes pour faire une bonne initialisation.
Une petite vérification du mécanisme de la génération de nombre pseudo aléatoires ne ferait aucun mal...

Tap.
(toujours deux fois)

#. Message de VYS le 04-03-2003 à 13:41
  [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: 15195 (Liche Ancestrale)   Citer Citer

function f_RollDice($ai_NbFace)
{
  srand((float) microtime()*1000000);
  $li_roll=rand(1,$ai_NbFace);
  return $li_roll;
}

La seule et unique fonction utilisée pour générer un nombre aléatoire.

<edit> en voyant ca, je me dis qu'un appel multiple de cette fonction dans une même page peut éventuellement donner une seed commune mais c'est à vérifier.</edit>

VYS - DungeonMaster


#. Message de FulJakhal le 04-03-2003 à 14:42
108706 - GorgonZolla (Tomawak 60)
- Les Affamés du Donjon -
Pays: Seychelles  Inscrit le : 15-02-2003  Messages: 544 (Shaï Epileptique)   Citer Citer
Euh.... en initialisant le sel une fois, on a une série pseudo-aléatoire qui vaut ce que vaut l'algorithme.
En initialisant le sel avant chaque tirage, on casse la série (si le sel est le même, chaque tirage est le même par exemple). Donc la série est biaisée et totalement prévisible (encore faut-il connaître microtime() mais bon). Bref en faisant ainsi l'algorithme de série ne sert plus à rien, le hasard étant à chaque tirage reporté sur le sel, appeler rand est inutile.

#. Message de PahTroll le 04-03-2003 à 18:32
1130 - Pah' Troll (Kastar 60)
Pays: France  Inscrit le : 20-08-2002  Messages: 2197 (Djinn Tonique)   Citer Citer

Assez d'accord avec FulJakhal :

http://www.php.net/manual/en/function.srand.php : grosso-merdo le premier pb c'est que la seed ne doit pas être initialisée à chaque apelle de rand, mais une fois par script. c'est ce que mentionnes le DM dans son <edit> .... </edit> En ce qui nous concerne ce serait une fois pour toute par login. Sinon les rand peuvent être similares ( ie plus t'as pas de bol ... plus t'as pas de bol ) ) puisqu'ils se basent sur la clock du serveur.

Mais je doute que cela s'applique à notre cas puisque les appels à f_RollDice sont faits après un click, donc à des instants assez différents finalement, non ?

Le second point assez sympa c'est sur l'utilisation d'un nombre premier au lieu de 1000000 pour ne pas retomber toujours sur les même. Malin ça, nan !! euh ... 3.628.799 par exemple ? il faudrait le prime le plus proche de 1.000.000 en fait : à vos méninges !

http://www.php.net/manual/en/function.mt-srand.php utilise un autre algo pour tirer le chiffre au hasard. ils ont l'air de dire que l'algo sort des chiffres plus uniformes, et qu'il est 4* plus rapide ... sais pas trop moi ... en tout cas leurs conclusions c'est (double)microtime()*1000000 ( c'est kif-kif avec (float)microtime()*1000000 ??? ), mais surtout d'utiliser les algos avec hashage ( fin de page ).

 

Maheureusement pour toi VYS, tout ça dépend de la fréquence de ton proc : inutile de tester ça sur nos bécanes à nous ;(((

bon courage ! )))))

 


#. Message de Toddmiller le 04-03-2003 à 18:52
  [Ami de MountyHall]
4570 - ( )
Pays: France  Inscrit le : 17-01-2003  Messages: 256 (Golem Costaud)   Citer Citer
microtime(), ça retoure le nombre de microsecondes passées depuis le 01/01/1970, 00:00 GMT.

Effectivement, il ne faut appeler srand() qu'une seule fois par script : ça fait moins de boulot pour le CPU et l'aléatoire est de bien meilleure qualité.

#. Message de Toddmiller le 04-03-2003 à 19:25
  [Ami de MountyHall]
4570 - ( )
Pays: France  Inscrit le : 17-01-2003  Messages: 256 (Golem Costaud)   Citer Citer
Faut pas croire ce que j'ai dit ! En fait, microtime() retourne une chaîne de caractères dont le premier mot (le seul qui reste après la conversion en un nombre) représente le nombre de microsecondes passées depuis la dernière seconde.

Imho, c'est bizarre de mettre (float) à la place de (double) : le paramètre de srand() est un entier, normalement...

#. Message de Toddmiller le 04-03-2003 à 19:40
  [Ami de MountyHall]
4570 - ( )
Pays: France  Inscrit le : 17-01-2003  Messages: 256 (Golem Costaud)   Citer Citer
Après c'est promis, j'arrête de dire n'importe quoi. Le premier mot retourné par microtime(), c'est le nombre de microsecondes **exprimé en secondes**, donc compris entre 0 et 1. Donc effectivement il faut convertir la chaîne de caractère en un flottant, puis multiplier par 1 000 000 pour obtenir le nombre (entier) de microsecondes.

Voilà.

#. Message de Krasha le 05-03-2003 à 11:11
Pays: Belgium  Inscrit le : 23-01-2003  Messages: 78 (Momie Baveuse)   Citer Citer

grumpf...

comment est-ce qu'on fait pour initialiser du sel?

on prends une jambe de gob et on tape sur le sel?

 * tape un gob pour lui piquer sa jambe afin de tenter l'expérience d'initialisation du sel...*

Krasha *grosse faim de gob assaisonnée...*


#. Message de SisitRex le 05-03-2003 à 13:20
Pays: France  Inscrit le : 21-05-2002  Messages: 380 (Golem Costaud)   Citer Citer
Ca vaut ce que ca vaut mais partant de la même impression que TapRaclOthLath on a mené une petite etude de statistique...

Résultat sur 4 trolls differents pendant environ 2/3 mois on a enregistrer tous nos jets puis étudier si la répartition se faisais comme il faut.... et c'est le cas...

#. Message de Pet-Troll le 05-03-2003 à 13:52
4345 - Escobellangan (Skrim 60)
- Le Clan du Centre du Monde -
Pays: France  Inscrit le : 20-12-2002  Messages: 390 (Golem Costaud)   Citer Citer

Expérience personnelle qui ne vaut par conséquent pas grand'chose :

quand tu n'as pas de bol lors d'un tour, c'est global... En gros, avec un déplacement éclair supérieur à 85%, quand j'en rate un, j'en rate plusieurs dans le même tour... Mais c'est relativement rare (même si ca marque beaucoup plus que les 50 tours où les déplacements éclair sont tous passés) !

Par contre, si tu arrêtes ton tour quand tu fais le premier mauvais jet et que tu reviens plus tard, ca semble redevenir bon. Bref, c'est peut-être globalement aléatoire, mais localement, de mon point de vue, ca l'est beaucoup moins.

Mot, qui se dit qu'il devrait arrêter avec l'aléatoire...


#. Message de finlard le 05-03-2003 à 14:58
  [Ami des Monstres]
2345 - finlard (Tomawak 39)
- VENGEANCE pour CHULZI !!! -
Pays: Uzbekistan  Inscrit le : 02-12-2002  Messages: 873 (Shaï Epileptique)   Citer Citer
haaaaa... mon sujet préféré revient sur le tapis.




j'ai juste deux remarques:




i) concernant l'initialisation de la graine, ceci doit être fait le moins souvent.
Les nombres générés étant pseudo-aléatoires, pour une même graine initiale la période est ~10^12 tirages (pr les plus mauvaises)... Donc vu que pour chaque DLA de troll on a à peu près 12 tirages, ce qui nous fait 24 tirages/troll/jour, soit 60.000 tirages par jour, on est tranquille. On pourrait même ne jamais changer la graine, les trolls n'y verraient que du feu (leurs tirages étant asynchrones par rapport à la périodicité des nbres aléatoires). Donc changer la graine une fois par jour est LARGEMENT SUFFISSANT (par exemple à la première connection après minuit). Il ne faut pas la changer à chaque script, car la il peut y avoir des pb puisque la génération de la graine est beaucoup moins aléatoire que les tirages ensuites.



ii) concernant les séries noires, il ne faut pas voir le hazar comme sinonyme d'HOMOGENEITE. Au contraire, lorsque les tirages sont vraiments aléatoires la probabilité de "faire un tir groupé" est loin d'être négligeable.

exemple d'application: prennez 7 dates au hazard dans l'année, quelle est la valeur moyenne du plus petit écart en jour entre deux dates?

exemple d'application bis: dans un classe de 30 élèves, quelle est la probabilité d'avoir 2 personnes nées le même jour?

(réponses dans un prochain post)

#. Message de finlard le 05-03-2003 à 15:00
  [Ami des Monstres]
2345 - finlard (Tomawak 39)
- VENGEANCE pour CHULZI !!! -
Pays: Uzbekistan  Inscrit le : 02-12-2002  Messages: 873 (Shaï Epileptique)   Citer Citer
grosse faute d'orthographe... à synonyme...

#. Message de BeachTroll le 05-03-2003 à 15:12
Pays: France  Inscrit le : 07-08-2002  Messages: 80 (Momie Baveuse)   Citer Citer

DM: ct une blague j'espère ton message, car il est écrit sur toutes les pages parlant de l'aléatoire en PHP que ce code est à proscrire ...

Je ne m'étonne plus que d'une part, une attaque sur un monstre se solve souvent par attaque=esquive (ce qui est tres rare en principe, mais tres fréquent avec un tel algo car les lancés sont fait au meme moment).


Boustifailleur, une guilde contenant des programmeurs


#. Message de Oeufdhur le 05-03-2003 à 15:22
711 - Oeufdhur (Durakuir 51)
Pays: France  Inscrit le : 09-10-2002  Messages: 99 (Momie Baveuse)   Citer Citer

1 - Avec le srand appele a chaque coups, le rand sert a rien et on perd le benefice des suites  pseudo-aleatoires. Autant prendre directos le microtim et appliquer un MD5 dessus... Si on veut un minimum d'aleatoire, autant utiliser la fct pseudo-aleatoire correctement. Donc l'init du generateur aleatoire ne doit etre absolument faite qu'une seule fois. C'est la condition de base de toutes utilisation de generateur pseudo-aleatoire... La solution la plus simple et la moins cher serait de placer un flag.

2 - J'ai etudier l'algo Mersenne and Twister. Il est effectivement bien plus rapide. C'est facile de faire de test Bench pour le prouve. Faut dire que tous les calculs sont des calculs binaire de base (shift, ...) ce que sait faire le mieux n'importe kel uPro. Mais ce qui est ecore plus flagrant, c'est la repartition des suites pseudo-aleatoire car avec Mersenne and Twister les valeurs sont vraiment distribue de maniere bien plus uniforme, ca se voit a l'oeil nu, meme pas besoin defaire des mesure precise.... Ya pas photo, le rand libc de base et carrement pourri compare a mt_rand. D'ailleurs sur les docs PHP ils le disent eux-meme. Puis c'est bien connu que le rand libc est tres limite...

Mountyhall est un jeu ou la partie de l'aleatoire est plus qu'essentiel. Il est important d'y conssacre un peu plus de priorite. Deja, ce qui couterai le moins cher serait d'utiliser les algo Mersenne and Twister disponible directement dans PHP. En plus on alegerai le CPU. Ensuite, fo faire du vrai pseudo aleatoire.

Voici ma version:
 function f_RollDice($ai_NbFace)
{
    if (!isset($GLOBALS['IS_MT_SRAND'])) {
        $GLOBALS['IS_MT_SRAND'] = 1;
         mt_srand((float) microtime()*1000000);
    }
    return mt_rand(1,$ai_NbFace);
}

Bon je sais j'ai utilise une variable globale ("BOUH PAS BOOOO") vivi... bon... c'est pas bo, mais c'est deja bien plus efficace! Puis cette methode a 2 avantages:
 - Pas a se preocuper de la fct, elle fait tout.
 - bouffe pas plus de CPU.
Suffit de mettre un nom de variable inviolable, pi voila.
Enfin je suis certain que vous allez obtimiser un peu plus )

9d'hur.


#. Message de Oeufdhur le 05-03-2003 à 18:46
711 - Oeufdhur (Durakuir 51)
Pays: France  Inscrit le : 09-10-2002  Messages: 99 (Momie Baveuse)   Citer Citer

UP


#. Message de Gloum le 05-03-2003 à 19:44
5991 - Gloum (Kastar 52)
- les Tas c'est nous -
Pays: France  Inscrit le : 28-01-2003  Messages: 112 (Golem Costaud)   Citer Citer
Je comprends pas grand chose aux termes d'informatique, et j'ai conscience qu'un cas personel, isolé, ne permet pas de déduire grand chose, mais vu les échecs / réussites de mon troll, ben soit j'ai vraiment eu plein de séries improbables soit l'aléatoire est bizarre à ce jeu (je m'y connais un peu en probas, contrairement à l'informatique !).

Par exemple, depuis deus semaines que j'ai dépassé les 50 % en camouflage, je n'ai réussi le camouflage que 3 ou 4 fois, ce qui est fort peu.

De façon plus générale, cela fait deux semaines que je rate 4 fois sur 5 mes compétences à 50 % et plus, c'est un peu casse-...


Gloum

#. Message de VYS le 06-03-2003 à 00:19
  [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: 15195 (Liche Ancestrale)   Citer Citer

Suivant le conseil de Finlard, j'ai totalement enlevé le srand.

VYS - DungeonMaster


#. Message de opru le 06-03-2003 à 00:32
  [Ami de MountyHall]
2827 - ( )
Pays: France  Inscrit le : 21-12-2002  Messages: 1576 (Trõll de Compèt')   Citer Citer

c'est marrant, ça fait 10 ans que je connais finlard, c'est la 1ere fois que je comprends absolument rien a ce qu'il dit

Enfin mis a part les problèmes de décodeurs mais ça c'est une autre histoire...


#. Message de Oeufdhur le 06-03-2003 à 09:11
711 - Oeufdhur (Durakuir 51)
Pays: France  Inscrit le : 09-10-2002  Messages: 99 (Momie Baveuse)   Citer Citer

C'est deja une tres bonne chose DM. Mais je continue a maintenir que le jeu y gagnerai d'avantage a utiliser la commande PHP 'mt_rand' a la place de 'rand'. Pourquoi tiens-tu absolument a garder ce dinosaure provenant du C et ayant mainte fois prouve ses defaillances?

9d'hur, qui ne se sent pas ecoute, pourtant a de quoi revendiquer ses competances.


#. Message de finlard le 06-03-2003 à 10:31
  [Ami des Monstres]
2345 - finlard (Tomawak 39)
- VENGEANCE pour CHULZI !!! -
Pays: Uzbekistan  Inscrit le : 02-12-2002  Messages: 873 (Shaï Epileptique)   Citer Citer
opru> lol! mnumunne itimnennnu mnnonnu...

DM> Merci DM, avec une base de 100.000=10^5 tirages par jour (en comptant attaque de troll, jet de rm, attaque de monstre, trésor qui apparait, etc...) on est tranquile pour 10^7 jours soit.... longtemps! (et encore avec une graine pas terribel!)

Oeufdur> peut être que rand est un dinosaure venant du C mais je l'utilise qq fois dans des simulations num où j'ai de l'ordre de 10^20 tirages et cela ne pose pas de pb. Mais peut -être que la fct rand en php n'est pas la meme que celle en C/C++?

Pages : [1], 2, 3, 4, 5

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:01:43 le 18/05/2026 ] - [ Page générée en 0.074 sec. ]