JeuWeb - Crée ton jeu par navigateur
[Résolu] L'aléatoire en PHP - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] L'aléatoire en PHP (/showthread.php?tid=2329)

Pages : 1 2 3 4


[Résolu] L'aléatoire en PHP - phenix - 27-01-2008

Bonjour à tous,

Voila j'ai un petit souci avec l'aléatoir de PHP: j'utilise la fonction mt_rand() pour tiré un pourcentage (mt_rand(1,100) et savoir si un joueur touche sa cible ou pas.

Mais elle semble avoir un défaut: tiré des valeur proche les une des autres si on le tir dans un laps de temps très court. Résultat, je me retrouve avec de plainte de joueur qui "rate toutes leurs attaques"... (Ben oui ils ne viennent pas ce plaindre de les réussir toutes :goodSmile.

Bref, je me demandais si l'un d'entres vous avaient déjà été confronté a ce problème et ce qu'il a put trouver pour le résoudre.

Amicalement,

Phenix


RE: L'aléatoir en PHP - loka - 27-01-2008

Je pense que tu devrais faire un log avec toutes les attaques et en tirer un pourcentage des attaques réussis et des attaques ratés.

Tu pourras déjà voir si il n'y a pas un problème (un trop gros pourcentage d'attaques ratés).

De plus, si quelqu'un se plaint, tu pourras toujours lui montrer les pourcentages (si ils sont normaux) et lui dire qu'il a tout simplement pas eu de chance ^^


RE: L'aléatoir en PHP - phenix - 27-01-2008

Citation :Je pense que tu devrais faire un log avec toutes les attaques et en tirer un pourcentage des attaques réussis et des attaques ratés.

Tu pourras déjà voir si il n'y a pas un problème (un trop gros pourcentage d'attaques ratés).

De plus, si quelqu'un se plaint, tu pourras toujours lui montrer les pourcentages (si ils sont normaux) et lui dire qu'il a tout simplement pas eu de chance 34

J'ai déjà ces pourcentages, il sont normaux, le problème ne vient pas des pourcentage mais des série tiré par mt_rand. Ce qui fait que quelqu'un qui n'a pas chance n'en a pas pour toute la série ou en tout cas pour la majorité de la série même s'il a 80% de chance de plus c'est répétitif... c'est pas "juste une fois".


RE: L'aléatoir en PHP - naholyr - 27-01-2008

C'est le propre de l'aléatoire de n'être pas offrir une distribution homogène. Si c'était le cas, il serait prévisible (connaissant les X tirages précédents, on saurait qu'il y a des chances de tomber plus sur un résultat que sur un autre), et ne serait donc plus aléatoire.

Si quand tu fais 1 sur 1D100, tu sais qu'au tir prochain la probabilité de faire 1 est très faible, alors ça n'est plus du vrai aléatoire Wink
Or sur 3 lancers successifs, tu as autant de chance de faire 12 puis 37 puis 91 que 1 puis 1 puis 1.
C'est ce qu'on appelle le hasard Smile


RE: L'aléatoir en PHP - daroth - 27-01-2008

Ce qu'il veut dire phenix c'est que pour un échantillon de 1000 lancés (par exemple) le tirage de valeur est équiprobable, mais que sur un faible laps de temps l'intervalle de valeurs tirées est assez restreint.
Comme un joueur joue généralement toutes ses attaques dans un laps de temps assez faible (quelques minutes), il a de grande chance d'avoir un très grand taux d'echec ou de réussite, mais rien de très équilibré.

La fonction mt_rand génère visiblement un tirage pseudo-aléatoire peu équilibré.

Et la question initiale est donc : "comment rendre ce tirage aléatoire plus équilibré, avec des tirages vraiment aléatoires, même si les tirage sont proches dans le temps?"

J'espère avoir bien redéfinis la problématique.


RE: L'aléatoir en PHP - phenix - 27-01-2008

Citation :Ce qu'il veut dire phenix c'est que pour un échantillon de 1000 lancés (par exemple) le tirage de valeur est équiprobable, mais que sur un faible laps de temps l'intervalle de valeurs tirées est assez restreint.
Comme un joueur joue généralement toutes ses attaques dans un laps de temps assez faible (quelques minutes), il a de grande chance d'avoir un très grand taux d'echec ou de réussite, mais rien de très équilibré.

La fonction mt_rand génère visiblement un tirage pseudo-aléatoire peu équilibré.

Et la question initiale est donc : "comment rendre ce tirage aléatoire plus équilibré, avec des tirages vraiment aléatoires, même si les tirage sont proches dans le temps?"

J'espère avoir bien redéfinis la problématique.

C'est tout a fait cela.


RE: L'aléatoir en PHP - Sephi-Chan - 27-01-2008

À mon avis, tes joueurs se sentent persécutés par le hasard de manière injustifiée. Je doute que les jets, si peu espacées dans le temps soient-ils, donnent systématiquement des résultats proches.


Sephi-Chan


RE: L'aléatoir en PHP - joshua - 27-01-2008

surtout que quand on me dit sur un intervalle très court, j'aurais cru sur un intervalle de l'autre du dizieme de seconde etc.
Mais sur un intervalle de l'ordre de la minute, je peux jurer que mt_rand est fiable!!!


RE: L'aléatoir en PHP - loka - 27-01-2008

joshua a écrit :surtout que quand on me dit sur un intervalle très court, j'aurais cru sur un intervalle de l'autre du dizieme de seconde etc.
Mais sur un intervalle de l'ordre de la minute, je peux jurer que mt_rand est fiable!!!

+1

Du moins de ce que j'ai pu tester.


RE: L'aléatoir en PHP - naholyr - 27-01-2008

daroth a écrit :comment rendre ce tirage aléatoire plus équilibré, avec des tirages vraiment aléatoires, même si les tirage sont proches dans le temps?
Tirages équilibrés même si proches dans le temps = incompatible avec la notion de hasard Smile