Petite curiosité mathématique du coup, qui reste dans le thème: si l'aléatoire se cumule au fil du jeu, alors la médiane s'écroule ou la moyenne s'envole
Modèle géométrique
Voici un modèle dans lequel on part d'une valeur 100 au tour 0, et à chaque tour, cette valeur est altérée de -5% à +5% (l'altération exacte est aléatoire à chaque tour). Donc:
En abscisse (horizontale), on a la valeur finale de chaque simulation et en ordonnée (verticale), le % de résultats qui sont dans cet intervalle à la fin des simulations. Par exemple, sur les 5000 simulations effectuées, 27% présentaient une valeur finale comprise entre 96 et 100.
On constate que, après 10 tours cumulatifs, la moyenne (somme des valeurs finales divisée par le nombre total de valeurs simulées) et la médiane (valeur finale "au milieu" des autres: autant de résultats inférieurs que supérieurs) des 5000 simulations est de 100, et près des deux tiers des simulations (63.1%) ont une valeur finale proche de 100 (compris entre 95 et 105).
Si on augmente le nombre de tours (= plus on avance dans le temps), alors on s'aperçoit que la probabilité d'être resté au niveau 100 est de plus en plus faible (30%): ou bien on a totalement dévié vers +150 ou bien on s'est écroulé vers 50. En revanche, la moyenne reste aux environs de 100. Vous avez peut-être constaté que la médiane a légèrement baissé, mais on peut éventuellement attribuer cela au hasard
Si on continue à avancer dans le temps (on fait plus de tours successifs) alors on s'aperçoit que cette tendance se confirme.
Au final, si on se projette sur 1000 tours, on constate que:
• La moyenne est restée à 100 (ce qui pousse l'instinct à croire faussement que l'aléatoire n'a pas déséquilibré le jeu)
• La médiane a dégringolé à 85 (ce qui veut dire que la moitié des tirages ont une valeur finale nettement inférieure à 100)
• La probabilité d'être aux environs de 100 est très faible (le jeu s'est totalement dispersé)
Ce modèle cumulatif est *très* courant. Dès l'instant où le jeu n'est pas *intégralement* réinitialisé (et si vous avez un aléatoire qui impacte un paramètre), alors vous avez du cumulatif. Par exemple, si je fais apparaitre des ennemis qui ont entre 40 et 60PV, on pourrait se dire "ce n'est pas cumulatif: les PV d'un ennemi n'influent pas sur les PV du prochain!". Mais les PV de chaque ennemi influent sur les PV du joueur, et l'aspect cumulatif se trouvera là. Idem si vous avez un RPG avec des donjons "indépendants": si l'équipement, les PV, les équipiers, etc sont conservés d'un donjon à l'autre, alors il y a un effet cumulatif.
Modèle arithmétique
Alors, cet effet cumulatif n'est peut-être pas de type géométrique (Valeur(T+1) = Valeur(T)*(1+RAND)), mais de type arithmétique, c'est à dire que la variation aléatoire porte sur un "+" et non sur un "*":
.
Je me permet d'émettre des doutes sur ce genre de modèle car il est très rare selon moi (le modèle géométrique ne souffre pas du changement d'échelle: on peut tout multiplier par une constante, cela ne modifiera rien; le modèle arithmétique ne permet pas cela: si la valeur de base du modèle géométrique est 1000 et non 100, alors rien ne change, mais si la valeur de base du modèle arithmétique est 1000 et non 100 alors le RAND(-5, +5) n'aura pas du tout le même effet), mais n'ayant pas de preuve, essayons de l'analyser aussi, selon le même schéma.
Au bout de 10 tours, dur de tirer des conclusions, mais l'histogramme ressemble furieusement au précédent... Peut-être cela ne change rien de choisir ce modèle?
Il semble en fait que si: la médiane n'a effectivement plus tendance à s'effondrer
Etalé sur 1000 tours, le modèle arithmétique ne présente effectivement pas de variation de la moyenne ni de la médiane. Mais on a maintenant la présence de nombres négatifs, même si j'ai limité l'affichage aux nombres positions: la barre de gauche s'étale en fait dans les négatifs. De plus, la probabilité d'être resté aux environs de la valeur initiale 100 est toujours très faible.
Revenons au modèle géométrique (le premier, celui qui me semble bien plus courant). Comment expliquer l'effondrement de la médiane? Simplement en constatant que 100 + 5% - 5% != 100, car 100 + 5% = 105 et 105 - 5% = 99.75 (faites pareil dans l'autre sens, avec -5% puis +5% et vous tomberez sur le même résultat). Du coup, peut-on corriger cette déviation? Par exemple, en décentrant l'intervalle aléatoire, pour RAND(-5%, +5.26%)? (Note: Pourquoie 5.26%? Parce que 100 - 5% + 5.263% ~= 100)
Et bien, dans ce cas, la médiane va bien rester aux environs de 100... mais la moyenne va s'envoler ! En effet, l'intervalle n'est plus centré autour de 0%, mais autour de 0.13%, ce qui signifie qu'en moyenne, à chaque tout, la valeur 100 augmentera de 0.13%...
Il semble donc mathématiquement impossible de garder une moyenne et une médiane aux environs de 100, et ne parlons même pas de conserver une probabilité décente de rester aux environ de 100 (dans tous les cas, elle s'est effondrée).
Bilan
En conséquence, oui, à terme, l'aléatoire va ramener d'énorme déviations dans un jeu. On peut tenter de corriger ce phénomène, avec la notion "d'hasard corrigé" de CapitainJS, mais cela rajoute de la complexité, qui rajoute peut-être d'autres défauts au modèle auxquels on n'avait pas pensé...
Franchement, le coup de la médiane qui s'effondre et de la probabilité croissante de ne *plus* être autour de 100, vous y aviez pensé vous?!
Sources (PHP)
Les sources: https://xenos.reinom.com/blog/rand-study/rand-study.7z
En revanche, je ne pense pas non plus que l'aléatoire soit nécessaire pour que le MdJ puisse jouer à son jeu. Je suis d'accord sur ce point si le jeu est scripté, le MdJ aura du mal à le rejouer (tout comme les joueurs: j'adore Dead Space, mais il est très scripté, ce qui rend moins amusant le fait d'y jouer deux fois de suite). Mais si le jeu est déterministe (sans aléatoire) sans être scripté (par exemple, un RTS sans aléatoire), alors je pense qu'il est parfaitement possible d'y jouer et d'y rejouer autant qu'on veut, qu'on ait été le créateur ou non du jeu.
Modèle géométrique
Voici un modèle dans lequel on part d'une valeur 100 au tour 0, et à chaque tour, cette valeur est altérée de -5% à +5% (l'altération exacte est aléatoire à chaque tour). Donc:
Code :
Valeur(tour suivant) = Valeur(tour précédent) * (1 + rand(-5%..+5%))
En abscisse (horizontale), on a la valeur finale de chaque simulation et en ordonnée (verticale), le % de résultats qui sont dans cet intervalle à la fin des simulations. Par exemple, sur les 5000 simulations effectuées, 27% présentaient une valeur finale comprise entre 96 et 100.
On constate que, après 10 tours cumulatifs, la moyenne (somme des valeurs finales divisée par le nombre total de valeurs simulées) et la médiane (valeur finale "au milieu" des autres: autant de résultats inférieurs que supérieurs) des 5000 simulations est de 100, et près des deux tiers des simulations (63.1%) ont une valeur finale proche de 100 (compris entre 95 et 105).
Si on augmente le nombre de tours (= plus on avance dans le temps), alors on s'aperçoit que la probabilité d'être resté au niveau 100 est de plus en plus faible (30%): ou bien on a totalement dévié vers +150 ou bien on s'est écroulé vers 50. En revanche, la moyenne reste aux environs de 100. Vous avez peut-être constaté que la médiane a légèrement baissé, mais on peut éventuellement attribuer cela au hasard
Si on continue à avancer dans le temps (on fait plus de tours successifs) alors on s'aperçoit que cette tendance se confirme.
Au final, si on se projette sur 1000 tours, on constate que:
• La moyenne est restée à 100 (ce qui pousse l'instinct à croire faussement que l'aléatoire n'a pas déséquilibré le jeu)
• La médiane a dégringolé à 85 (ce qui veut dire que la moitié des tirages ont une valeur finale nettement inférieure à 100)
• La probabilité d'être aux environs de 100 est très faible (le jeu s'est totalement dispersé)
Ce modèle cumulatif est *très* courant. Dès l'instant où le jeu n'est pas *intégralement* réinitialisé (et si vous avez un aléatoire qui impacte un paramètre), alors vous avez du cumulatif. Par exemple, si je fais apparaitre des ennemis qui ont entre 40 et 60PV, on pourrait se dire "ce n'est pas cumulatif: les PV d'un ennemi n'influent pas sur les PV du prochain!". Mais les PV de chaque ennemi influent sur les PV du joueur, et l'aspect cumulatif se trouvera là. Idem si vous avez un RPG avec des donjons "indépendants": si l'équipement, les PV, les équipiers, etc sont conservés d'un donjon à l'autre, alors il y a un effet cumulatif.
Modèle arithmétique
Alors, cet effet cumulatif n'est peut-être pas de type géométrique (Valeur(T+1) = Valeur(T)*(1+RAND)), mais de type arithmétique, c'est à dire que la variation aléatoire porte sur un "+" et non sur un "*":
Code :
Valeur(T+1) = Valeur(T)+RAND(-5.0, +5.0)
Je me permet d'émettre des doutes sur ce genre de modèle car il est très rare selon moi (le modèle géométrique ne souffre pas du changement d'échelle: on peut tout multiplier par une constante, cela ne modifiera rien; le modèle arithmétique ne permet pas cela: si la valeur de base du modèle géométrique est 1000 et non 100, alors rien ne change, mais si la valeur de base du modèle arithmétique est 1000 et non 100 alors le RAND(-5, +5) n'aura pas du tout le même effet), mais n'ayant pas de preuve, essayons de l'analyser aussi, selon le même schéma.
Au bout de 10 tours, dur de tirer des conclusions, mais l'histogramme ressemble furieusement au précédent... Peut-être cela ne change rien de choisir ce modèle?
Il semble en fait que si: la médiane n'a effectivement plus tendance à s'effondrer
Etalé sur 1000 tours, le modèle arithmétique ne présente effectivement pas de variation de la moyenne ni de la médiane. Mais on a maintenant la présence de nombres négatifs, même si j'ai limité l'affichage aux nombres positions: la barre de gauche s'étale en fait dans les négatifs. De plus, la probabilité d'être resté aux environs de la valeur initiale 100 est toujours très faible.
Revenons au modèle géométrique (le premier, celui qui me semble bien plus courant). Comment expliquer l'effondrement de la médiane? Simplement en constatant que 100 + 5% - 5% != 100, car 100 + 5% = 105 et 105 - 5% = 99.75 (faites pareil dans l'autre sens, avec -5% puis +5% et vous tomberez sur le même résultat). Du coup, peut-on corriger cette déviation? Par exemple, en décentrant l'intervalle aléatoire, pour RAND(-5%, +5.26%)? (Note: Pourquoie 5.26%? Parce que 100 - 5% + 5.263% ~= 100)
Et bien, dans ce cas, la médiane va bien rester aux environs de 100... mais la moyenne va s'envoler ! En effet, l'intervalle n'est plus centré autour de 0%, mais autour de 0.13%, ce qui signifie qu'en moyenne, à chaque tout, la valeur 100 augmentera de 0.13%...
Il semble donc mathématiquement impossible de garder une moyenne et une médiane aux environs de 100, et ne parlons même pas de conserver une probabilité décente de rester aux environ de 100 (dans tous les cas, elle s'est effondrée).
Bilan
En conséquence, oui, à terme, l'aléatoire va ramener d'énorme déviations dans un jeu. On peut tenter de corriger ce phénomène, avec la notion "d'hasard corrigé" de CapitainJS, mais cela rajoute de la complexité, qui rajoute peut-être d'autres défauts au modèle auxquels on n'avait pas pensé...
Franchement, le coup de la médiane qui s'effondre et de la probabilité croissante de ne *plus* être autour de 100, vous y aviez pensé vous?!
Sources (PHP)
Les sources: https://xenos.reinom.com/blog/rand-study/rand-study.7z
En revanche, je ne pense pas non plus que l'aléatoire soit nécessaire pour que le MdJ puisse jouer à son jeu. Je suis d'accord sur ce point si le jeu est scripté, le MdJ aura du mal à le rejouer (tout comme les joueurs: j'adore Dead Space, mais il est très scripté, ce qui rend moins amusant le fait d'y jouer deux fois de suite). Mais si le jeu est déterministe (sans aléatoire) sans être scripté (par exemple, un RTS sans aléatoire), alors je pense qu'il est parfaitement possible d'y jouer et d'y rejouer autant qu'on veut, qu'on ait été le créateur ou non du jeu.