Se connecter
Se connecter

ou
Créer un compte

ou

L'ordinateur ne peut pas créer d'aléatoire

  • 23 réponses
  • 12 participants
  • 889 vues
  • 10 followers
Sujet de la discussion L'ordinateur ne peut pas créer d'aléatoire
Hello,

j'ai retrouvé cette affirmation dans un sujet (sur le plug-ins d'EQ). C'est une affirmation qu'on retrouve souvent.

Cependant, je me rappelle avoir fait dans ma folle jeunesse un certain nombre de programmes qui faisaient appel à des tirages aléatoires.

De mémoire, à l'époque, lorsqu'on utilisait une commande de type random(), on obtenait des suites toujours identiques de nombres. Donc, pas un véritable tirage aléatoire, mais la production de nombres déjà prédéterminés.

Sauf qu'il était possible d'obtenir un véritable aléatoire en utilisant le facteur temps. En effet, le moment où la commande était déclenchée était, elle aléatoire. En prenant la mesure de temps la plus précise possible selon l'ordinateur et le language en jeu (de mémoire, on arrivait facilement à des micro-secondes sur un vieux coucou basique), et en utilisant ce nombre comme facteur de celui donné par la fonction random(), on obtenait bien un véritable tirage aléatoire, non ?

De fait, si l'ordinateur lui-même (son hardware) est bien incapable de générer de l'aléatoire, un programme peut tout à fait le faire.

Qu'est-ce qui clocherait dans mon raisonnement ?

[ Dernière édition du message le 20/01/2017 à 11:02:12 ]

2

Je suis pas du tout spécialiste mais pour moi il y a un truc qui cloche entre "générer de l'aléatoire" et le facteur aléatoire du moment ou tu appuie sur la commande.

Déjà, dans ta description, je me demande si ce serait pas plus juste que l'aléatoire dans la commande ne soit pas le moment où tu l'enclenche mais plutôt le fait que la commande s'enclenche dans un temps non définit et non maitrisable après que tu ais appuyé sur le bouton...

Mais au delà, si la production de nombre prédéterminés est la même quelque soit le moment du déclenchement, je ne vois pas trop où se situe la différence dans la création d'une liste aléatoire.

Quand on parle de séquenceur euclidien, on parle bien d'un logiciel qui fait de l'aléatoire, non ?

 

Tant qu'il y aura des couilles en or, il y aura des lames en acier

3
Citation :
En prenant la mesure de temps la plus précise possible selon l'ordinateur et le language en jeu (de mémoire, on arrivait facilement à des micro-secondes sur un vieux coucou basique), et en utilisant ce nombre comme facteur de celui donné par la fonction random(), on obtenait bien un véritable tirage aléatoire, non ?


Non puisque tu dépends de trucs non aléatoires. Le résultat pourra être déterminé à l'avance (même si tu le rends difficile)
4
Comment peux-tu déterminer à l'avance le chiffre qui sera pris sur la mesure du temps ?
5
Intéressant. Par définition l'ordinateur ne peut pas créer d'aléatoire. On parle plutôt de pseudo aléatoire puisque basé sur un algorithme. Effectivement la vitesse du processeur (et du processus) pourrait entrer en ligne de compte. Le fait qu'il y ait une micro surtension sur le réseau électrique, etc...

Par extension je me suis toujours demandé si les actions humaines partaient d'une volonté propre aléatoire au niveau des neurones ou d'une interaction constante avec le milieu. Des fois je me pose ces questions, je me fais bcp chier au boulot...
6
Citation :
Comment peux-tu déterminer à l'avance le chiffre qui sera pris sur la mesure du temps ?


Si tu sait quand tu prends ta mesure du temps sera prise, et que tu connais le temps actuel, je vois pas le problème.
7
Pour obtenir un résultat parfaitement aléatoire, je me suis déjà amusé à induire un plugin à partir d'un recepteur radio qui capte dans le vide, des parasites, un bruit rose, etc...
Ca sort peut être un peu du sujet mais y'a une idée.
8
Non, cela ne sort pas tout à fait du sujet, sauf si on considère que tu amènes une donnée externe aléatoire à l'ordinateur et que ce n'est donc plus lui qui génère l'aléatoire.

Citation de Patrick :
Citation :
Comment peux-tu déterminer à l'avance le chiffre qui sera pris sur la mesure du temps ?


Si tu sait quand tu prends ta mesure du temps sera prise, et que tu connais le temps actuel, je vois pas le problème.

Ben justement, tu ne sais pas. Non seulement l'utilisateur ne peut pas déclencher une action au millième de seconde près (encore moins au milliardième de seconde près), mais il ne peut pas savoir quelle durée va s'écouler entre l'action et le tirage.

Donc, si tu prends un chiffre qui vient d'une suite de nombre que l'utilisateur ne connaît pas et que tu le multiplies par, par exemple, le nombre de milliardièmes de secondes que donne l'horloge à un instant T, je ne vois pas comment le résultat peut être prévisible.

Tu peux même le leurrer encore plus en ne rendant pas le tirage dépendant d'une action (à part le lancement du programme).
9
Les algorithmes utilisés génèrent une suite de nombres, en apparence aléatoire. En fait ils partent d'un premier nombre, appelé "graine" (= seed), à partir duquel ledit algorithme génère sa suite de nombre. Si on connaît le point de départ ou le point où on en est, ainsi que l'algorithme, on peut très bien calculer le prochain "nombre aléatoire" : il suffit d'appliquer le même algorithme, et donc de faire le même calcul que l'ordinateur !

En ce sens ce n'est pas aléatoire.

D'un autre coté, il suffit de très peu de choses pour "choisir au hasard" cette graine par exemple en multipliant l'adresse IP par le nombre de millisecondes depuis la mise sous tension), et éviter que ce soit toujours la même suite de nombres qui soit générée.

À l'inverse, choisir toujours la même graine, permet de toujours retrouver la même série de nombres, sans avoir besoin de stocker cette série (qui est d'ailleurs potentiellement infinie). C'est cette astuce qui est utilisée pour créer des mondes immenses mais fixes dans le temps et pour tous les joueurs dans des jeux comme Elite, No Man's Sky, Minecraft...

On en a parlé ici :
https://fr.audiofanzine.com/le-pub-des-gentlemen/forums/t.40346,jouez-vous-aux-jeux-video,post.8695254,p.4.html
C'est ce que duch désigne par "monde / environnement procédural". La "procédure" étant l'algorithme en question.

Article détaillé :
https://fr.wikipedia.org/wiki/Générateur_de_nombres_pseudo-aléatoires


Ces suites de nombres sont aussi celles que l'on reçoit des satellites GPS et qui nous permettent de déduire la distance qui nous sépare du satellite, et donc au final savoir où on est !
https://fr.wikipedia.org/wiki/Générateur_de_nombres_pseudo-aléatoires#Une_application_originale_:_le_GPS


No Man's Sky :
150518_r26517-1200.jpg

[ Dernière édition du message le 20/01/2017 à 16:31:02 ]

10

Pourquoi j'ai flagué ce tiopic

Tant qu'il y aura des couilles en or, il y aura des lames en acier