lepropre a écrit
Scarabee a écritAardvark a écrit[...]je ne suis pas sûr que les extrêmes aient autant de chances de sortie que les valeurs médianes quand on l'utilise.[...]
FAUX
Un peu long à expliquer enfin bref... C'est faux.
Mais moi j'aimerais bien l'explication quand même par curiosité !
Comme c'est toi, voila ce que j'en sais ( == ça veut pas dire que c'est la vérité véritable).
Désolé d'avance pour le pavé d'approximations ci-dessous.
Dans l'idée, au niveau des composants d'un PC, ou même, de n'importe quel équipement éléctronique, tout est fait pour être parfaitement controlé.
C'est l'idée de base de n'importe quel composant d'être "prévisible".
Et puis tant mieux, on ne voudrait pas que son grille pain se mette soudain à rafraichir les toast parce que... oh ben y avait une chance sur mille que la resistance marche dans l'autre sens dis donc !
Bref, "créer" de l'aléatoire, ce n'est pas que c'est impossible, c'est que au niveau des composants éléctronique, ça ne s'invente pas.
(A part les pannes...)
Alors certe, on peut se baser sur des évènements "extérieurs", comme le temps (regarder la milliseconde où l'on veut un nombre aléatoire...), ou des mouvements de souris par exemple.
Sauf que... Même cela ce n'est pas vraiment aléatoire. Et même si ça l'était, on veut générallement plus d'un "jet" par milliseconde (pour de vrai c'est pas des millisecondes c'est plus précis mais on s'en fout).
Du coup, la solution commune en informatique comme souvent c'est... une liste.
Une longue liste. Une très longue liste de nombre aléatoires. Vraiment très longue et pour le coup vraiment très aléatoire sauf que... Elle est en dur.
C'est à dire que c'est toujours la même.
FUN FACT : AAA parlait d'une fonction Excel, et bien c'est typiquement ça.
Alors c'est pas forcément la même partout, mais disons que pour un programme donné, sur un PC donné, on va toujours se baser sur la même.
Du coup on ruse, la subtilité pour ne pas toujours avoir la même chose, c'est qu'on ne commence pas à lire cette liste toujours au même endroit.
Chaque programme va y aller de sa petite stratégie, mais généralement on va essayer d'obtenir un nombre aléatoire sur la base d'un évènement extérieur (temps / souris / ...), et à partir de celui là on va commencer à lire la liste à un emplacement au pif.
Et hop ! problème résolu. Enfin presque... Ca reste prévisible.
Pour de vrai ce n'est pas si grave. On est sur de l'aléatoire (on parlera toujours de pseudo-aléatoire en informatique pour les raisons évoquée ci-dessus).
On ne va jamais pouvoir dire "oh mes dés ont fait n'importe quoi, c'est parce que je suis sur un PC, booouuuuh".
Non ce n'est pas vrai, ça reste quasiement équivalent à de l'aléatoire.
Par contre pour les cas aux limites ça commence à poser problème.
On peut effectivement prédire parfaitement les résultats si l'on sait comment la liste à été initialisée (à quel endroit on commence à la lire).
Ou peut être même réussir à retrouver cet endroit si l'on a accès à tout les jets successifs.
Ou peut être que l'on finira par voir des schéma récurrent apparaitre si l'on fait beaucoup, mais alors beaucoup de tirage.
Un développeur qui gère une appli ayant des micro-transactions va certainement devoir se creuser la cervelle. Histoire d'éviter de foutre en l'air son business plan.
Bref... L'aléatoire en informatique n'existe pas, c'est vrai.
Mais bon... Dans la plupart des cas, c'est tout comme.
PS : Un bon exemple d'application où ce pseudo aléatoire n'était pas suffisant, c'est le RAPIDO.
Un jeu de la francaise des jeux (la flemme de regarder si ça existe encore) où il faisait beaucoup, mais alors beaucoup de tirages.
Comme ils avaient envie de se blinder et de ne pas être "prévisible" (même par chance), ils avait mis une petite caméra qui observait la vibration d'un quartz (ou un truc du genre).
Ca leur évitait qu'un mec soit payé à agiter une souris n'importe comment toute la journée j'imagine 😃