Forum Programmation.shell Le problème avec l’aléatoire c’est qu’on ne peut jamais être sûr que ce le soit

Posté par  . Licence CC By‑SA.
Étiquettes :
5
15
fév.
2024

En fait on ne peut qu’estimer la probabilité que ce le soit plus ou moins. Et de toute manière, rien n’est aléatoire. Henri Poincaré l’a clairement postulé il y a longtemps et personne n’a pu le démentir :

« Une cause très petite, qui nous échappe, détermine un effet considérable que nous ne pouvons pas ne pas voir, et alors nous disons que cet effet est dû au hasard. »

En Français comptant pour rien, sans cette horrible double négation :

« Le hasard c’est rien que des relations de causes à effets, que les effets on les voit bien, même qu’ils peuvent être tellement énormes et gigantesques qu’on peut pas les rater, mais qu’on est trop teubé pour voir les causes, alors là on dit « trop pas de chance ! »

Pour en venir à Bash,

  • La variable $RANDOM

Pratique n’est-ce pas ? Et bien non, quand on regarde de près on se demande même pourquoi elle existe ! Alors avec les dernières version de Bash (5.?+) c’est un peu moins cringe, mais sur tous les systèmes qui tournent dans la vraie vie professionnelle, $RANDOM sort des nombres qui vont de 0 à 32767, autant dire que si vous prenez les cinq chiffres à chaque fois vous aurez plus de 12588 que de 44588 (parce que vous en aurez pas de ce dernier !). Donc vraiment pas top. Vous êtes en train de vous dire : « j’ai qu’à prendre les trois derniers chiffres, concaténer et re-concaténer un bon nombre de fois et ça fera le job. »

C’est possible, mais au final vous n’aurez au mieux qu’un nombre entier aléatoire, sans pouvoir facilement le borner, bref, vous ne serez pas totalement satisfaits et aller vous remettre à Python en grognant.

Retrouvez votre joie de vivre, je vous fais don d’une solution hautement versatile, couvrant tous les besoins, ou presque, du simple lancé d’un dé à six faces à la génération automatique d’un programme en Brainfuck !

  • Ma solution, que je soumets à votre sagacité :
ranran() { tr -cd "${1:-0-9}" < /dev/urandom > >(head -c"${2:-1}"); }

Deux arguments : le jeu de caractères que votre valeur aléatoire peut prendre, et le nombre de caractères que vous souhaitez. La syntaxe ci-dessus n’est pas POSIX me semble-t-il, mais il doit être assez facile de reproduire la méthode en respectant POSIX, l’exercice est laissé au lecteur. Voici comment vous pouvez utiliser cette fonction "ranran"

Le dé à six faces :

$ ranran 1-6

Sans argument c’est un dé à dix faces :

$ ranran

Il n’y aurait aucun décaèdre régulier sur les 32300 existants, Ce qui prouve que la nature n’est pas aussi bien faite que ça. Mais c’est là toute la beauté de l’informatique, rendre possible l’impossible ! Veuillez notez que je prends cette dernière information pour argent content, personnellement je suis même pas sûr de pouvoir construire un seul décaèdre avec un couteau et une patate, même avec tout un sac de patates d’entraînement.

De l’hexadécimal ? Pas de souci, aller, un octet :

ranran a-f0-9 2

Plus grand ? Aucun souci, avec des lettres majuscules cette fois-ci :

ranran A-Z0-9 64

Un nombre compris entre 0 et un googol ? Fastoche :

ranran 0-9 $(ranran 1-9 2)

Bon ok, 99 chiffres 9 alignés ça fait un googol - 1, et je suis pas sûr que la distribution soit tout à fait homogène et donc parfaitement aléatoire, mais ! Comme c’est un exemple à l’utilité strictement didactique, OSEF à la puissance googol puissance googol. Plus inquiétant; si j’en crois Wikipédia, "googol" se dirait "gogol" en français… vraiment pas les derniers des gogols ces bouffeurs de grenouilles…

Et comme promis ! La génération d’un code source de Brainfuck :

ranran ']+-.,<[>' $(ranran 0-9 3)

Il est possible que le code source généré ne compile pas du premier coup, il faut probablement lancer la commande plusieurs fois (beaucoup de fois éventuellement). Mais ça doit marcher. Après tout “Shakespeare”, on le sait aujourd’hui, n’était qu’une armée de singes ayant accès à des machines à écrire pendant un temps suffisamment long.

  • # Bornage du random

    Posté par  (Mastodon) . Évalué à 4.

    C’est possible, mais au final vous n’aurez au mieux qu’un nombre entier aléatoire, sans pouvoir facilement le borner,

    for foo in $( seq 0 42 ) ; do
      printf "%d " $(( $RANDOM % 42 ));
    done
    
    • [^] # Re: Bornage du random

      Posté par  . Évalué à 5.

      Bien vu!

      Ceci dit si $RANDOM renvoie des valeurs de 0 à 32767 la distribution des tirages reste possiblement faussée, plus ou moins, voire pas du tout, selon la borne supérieure.

      Je peux me tromper mais avec 42, vu que 32767 / 42 = 780 + 7, les nombres de 0 à 7 ont plus de chance de sortir. Un probabilité supérieure de 1 / 781, soit environ 0,13 % (?)

  • # À quelques années près

    Posté par  (site web personnel) . Évalué à 5.

    Une modélisation physique de l'aube du XXe siècle — nommément la mécanique quantique — est considérée par beaucoup comme mettant en échec la vision déterministe qu'H. Poincaré partageait avec nombre de ses contemporains. Quoique ne partageant pas les vues épistémologiques qui conduisent à une telle remise en question — étant plus proche en cela du point de vue de N. Bohr — il me semblait important de mentionner ce point : actuellement nombre de philosophes et de spécialistes en sciences naturelles considèrent donc que le hasard existe vraiment.

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

    • [^] # Re: À quelques années près

      Posté par  . Évalué à 3. Dernière modification le 15 février 2024 à 14:51.

      est considérée par beaucoup comme mettant en échec la vision déterministe

      C’est vrai que les découvertes de la physique quantique remette tout en question. On parle aussi de « physique subatomique » je crois, ces deux termes sont interchangeables ? Ou bien la physique quantique est une conception, une approche particulière de la physique subatomique qui est un domaine plus large (potentiellement…) ?

      Même la relativité générale n’a plus aucune pertinence à cette échelle là me semble-t-il… L’intrication quantique aussi laisse songeur.

      Je peux très bien imaginer que la question de savoir si le principe déterministe est encore lui aussi pertinent doit donner lieu à de nombreux débats. Pour l’instant impossible d’être sûr. ^

    • [^] # Re: À quelques années près

      Posté par  . Évalué à 3.

      La mécanique quantique n'implique pas le non-déterminisme par elle-même. Ce sont la plupart de ses interprétations qui le font. Il y en a cependant une, le superdéterminisme qui rejette ce non-déterminisme (avec, comme bonus, la suppression du problème de la mesure). Le super-déterminisme est cependant très contesté car il remet en cause un principe que les scientifiques estiment fondamental pour l'existence de la science en tant que telle : la liberté de l'expérimentateur (superdéterminisme). Mais comme le dit Sabine Hossenfelder dans une vidéo sur le sujet, ce n'est pas parce que ça contrarie les scientifiques que c'est nécessairement faux.

    • [^] # Re: À quelques années près

      Posté par  . Évalué à 2. Dernière modification le 15 février 2024 à 18:44.

      actuellement nombre de philosophes et de spécialistes en sciences naturelles considèrent donc que le hasard existe vraiment

      Ce que l'on appelle souvent "hasard" n'est en fait que le résultat de l'impossibilité, au moment de l'expérience, de calculer les paramètres qui conditionnent le résultat. Exemple, le jeu de dés cité dans le lien ci-dessous.
      En physique quantique, le "véritable" hasard n'existe qu'en mécanique quantique, qui ouvre des portes incroyables:

      "Le hasard quantique permet également de rendre plus sûre la communication de données secrètes. Comme mentionné ci-dessus, la mesure perturbe l’état des systèmes quantiques, ce qui rend détectable la présence d’espions et constitue la base de la cryptographie quantique.
      Ces promesses technologiques sont au cœur de la « deuxième révolution quantique », qui exploite les caractéristiques les plus contre-intuitives de la mécanique quantique telles que les superpositions et le hasard quantiques pour révolutionner les technologies de l’information."
      https://lejournal.cnrs.fr/billets/quest-ce-que-le-hasard-quantique

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.