Se connecter
Se connecter

ou
Créer un compte

ou
FR
EN

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

  • 23 réponses
  • 12 participants
  • 1 013 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

11
Il y a effectivement des techniques pour choisir une graine vraiment aléatoire : temps lié à l'utilisateur comme évoqué, échantillonnage de bruit (par exemple sur une entrée audio non utilisée), bruit intrinsèque d'un transistor branché à l'envers, et même pour les applications de crypto il existe des bidules qui mesurent des désintégrations d'un élément radioactif (en application du principe d'incertitude)
https://en.wikipedia.org/wiki/Hardware_random_number_generator
https://www.fourmilab.ch/hotbits/hardware3.html

Le truc le plus drôle c'est le générateur de nombres aléatoires basé sur une lampe psychédélique et une webcam :
https://en.wikipedia.org/wiki/Lavarand

[ Dernière édition du message le 20/01/2017 à 17:40:05 ]

12
:bravo:

On est quand même dans un aléatoire exogène à l'ordinateur. En tous cas, c'est amusant 1895488.gif
13
Il me semble qu'un opérateur de jeux (FDJ ?) avait communiqué là dessus à une certaine époque : une loterie instantanée qui se jouait dans les bars et où en quelques minutes, les joueurs pouvaient parier et connaitre leurs gains. Le générateur de nombres aléatoires était installé dans le bar et générait une suite de nombre à partir de l'environnement sonore (pression acoustique, timbre, fréquence ?) du lieu. J'avais lu un article comme quoi les paramètres était tellement complexes que le résultat était impossible à orévoir.

Incrédule sur tout, sceptique sur le reste

14
Interessant. Là aussi, on prend une source exogène pour permettre à l'ordinateur de générer du vrai aléatoire.
15
Citation de Will :
Interessant. Là aussi, on prend une source exogène pour permettre à l'ordinateur de générer du vrai aléatoire.

Ben il n'y a pas trop le choix.



Citation :
J'avais lu un article comme quoi les paramètres était tellement complexes que le résultat était impossible à prévoir

Ouais enfin ça c'est super facile à faire, et depuis que les micro-ordinateurs existent :
- tu demandes à l'utilisateur d'appuyer sur une touche
- pendant ce temps tu fais une boucle qui tire des nombres au hasard

Comme ça va extrêmement vite, il est impossible à un être humain d'obtenir des résultats déterministes.

Et il y a mille autres solutions (heure courante, adresse IP, numéro du process, nom de l'utilisateur...)


Comme dit Will : n'importe quoi d'exogène.

[ Dernière édition du message le 21/01/2017 à 14:55:46 ]

16
Oui, d’ailleurs
Citation de Will :
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.


En fait c’est exactement l’inverse.

Je pense que la question du premier post serait en fait « quelle qualité d’aléatoire peut-on obtenir avec l’horloge pour seule information extérieure ».


Edit : Ah
Citation de Dr :
Comme ça va extrêmement vite, il est impossible à un être humain d'obtenir des résultats déterministes.

Prévisibles plutôt que déterministes du coup ? Parce que fondamentalement, la notion d’aléatoire dérive un peu vers la philosophie, c’est pour ça que je pense qu’il faudrait reformuler la question en terme de quantité d’entropie, de l’importance des défauts de la distribution des nombres selon l’usage qu’on en fait et de la faisabilité d’une méthode de prédiction… je répondrai pas par contre :-D

[ Dernière édition du message le 21/01/2017 à 15:23:36 ]

17
Oui "prévisible", tu as raison. Je me suis gouré de mot, mais c'est ce que je voulais dire.


Citation :
Je pense que la question du premier post serait en fait « quelle qualité d’aléatoire peut-on obtenir avec l’horloge pour seule information extérieure ».

Comme tu le sous-entend, avec des circuits synchrones (= pilotés pas une horloge) et numériques, c'est un peu mort, puisque justement tout est fait pour éviter des résultats aléatoires !

Par contre avec un VCO bien analogique déjà...

[ Dernière édition du message le 21/01/2017 à 17:25:18 ]

18

Une question que vous oubliez de poser est : "Est-ce que le hasard existe vraiment ?" 

Par exemple lors d'un lancé de dés, vous pensez avoir à faire au pour hasard, mais ce n'est qu'une succesion de paramètres physique. En confiant un dés à une machine très précise, avec des paramètres connus (surface, mase ...) on pourrait choisir de lancer un dés et le faire toujours sur la même face.

 

La seul inconnue dans le lancé de dès est notre main qui n'est pas assez précise pour être controler ainsi.

 

Une amie travaillant dans un casino m'expliquait qu'avec l'expérience sur certaines roulettes le croupier arrivait à placer à peu près la bille dans le secteur qu'il voulait.

 

Dans le cadre de ta question Will le hasard (et donc l'aléatoire) n'existe clairement pas. Quand je dévellope sur Arduino pour "générer" la graine du hasard (randomSeed) j'utilise une entrée analogique vide (qui va recevoir une sorte de bruit)

19
Citation :
Une amie travaillant dans un casino m'expliquait qu'avec l'expérience sur certaines roulettes le croupier arrivait à placer à peu près la bille dans le secteur qu'il voulait.

Et pour les tirages du loto faits avec des boules :

10360100.jpg

La peinture des nombres à deux chiffres est moins dense que celle des nombres à un chiffre. Enfin ça c'était dans les années 80, maintenant il y a un fond toujours de la même taille autour des nombres.
20

De nos jours elles sont mêmes pesées avant et après tirage par un huissier pour éviter toute tentative de triche

21
C'est quoi ton job?
Je pèse des boules pour garantir l'égalité des chances.
22
Statisticien quoi. :oops2:
23
J'ai vu le boulot d'un artiste/matheux polonais cet été au festival electropixel qui utilisait les pulsations d'un morceau de thorium comme source d'aléatoire pour un patch puredata, selon lui la source la "plus aléatoire" que l'on puisse trouver.
Si ça intéresse quelqu'un il s'appelle Robert Lisek et voici son site http://fundamental.art.pl/
et l'interview d'electopixel http://apo33.org/electropixel/index.php/2016/08/22/interview-robert-b-lisek-en/ ou il parle de "randomness" ! :)
je flag au passage !

[ Dernière édition du message le 23/01/2017 à 16:06:57 ]

24
:bravo: