De tant en tant, els programadors podem parlar de números aleatoris, que no és més que un número pres a l’atzar. Ara bé, tenint en compte que el funcionament d’un ordinador es basa principalment en operacions matemàtiques, sembla complicat obtenir números realment aleatoris. I és que no els obtenim. En realitat, el què acabem tenint, en general, són números pseudo-aleatoris.

I a qui li interessa, això? Doncs d’entrada, no crec que a gaire gent. De fet, a mi només em resulta curiós de tant, en tant, quan me’n recordo. El fet és que, en general, quan he necessitat generar dades “aleatòries”, m’ha valgut qualsevol seqüència de caràcters pseudo-aleatoris: per omplir dades de prova, per generar contrasenyes temporals o codis d’activació amb caducitat, o fins i tot per fer un exercici típic: “llançar una moneda”. I si bé, en general, les dades semblen aleatòries de veritat, això no és una afirmació del tot certa.

Perquè un valor fos aleatori, a priori hi hauria d’haver les mateixes possibilitats que hagués estat qualsevol altre, i no hauríem de poder desxifrar prèviament quin serà. L’exemple de la moneda, o del llançament d’uns daus ho demostra: tot i que hi ha forces previsibles que actuen sobre els elements, són tantes, i tant difícils d’analitzar en el moment en què es “generen”, que no tenim temps per saber-lo abans que l’haguem sabut.

En un ordinador, doncs, per generar un número que sigui o sembli aleatori hem de recórrer al món que envolta l’ordinador, ja que, per si sol, no pot prendre una decisió si no té criteris per aplicar. D’aquesta manera, s’utilitza el què s’anomena “llavor” (seed), que vindria a ser un valor inicial pres d’un esdeveniment que pugui resultar imprevisible. En un cas ben simple, podríem agafar el número de mil·lisegons en què estem per fer de llavor. Al tractar-se d’un valor que canvia ràpidament, seria difícil que poguéssim fer coincidir el valor aleatori amb una previsió nostra. Per complicar-ho, però, es poden utilitzar valors com ara una indicació numèrica obtinguda a partir de les últimes transmissions que hagin realitzat els components d’un ordinador, de manera que s’obtingui una llavor el més “caòtica” possible. De totes maneres, existeixen dispositius que poden ajudar a generar nombres aleatoris reals, recollint dades de l’entorn que siguin realment imprevisibles.

L’aleatorietat és, en el fons, ignorància, desconeixement. En el moment en què aprenem els criteris i podem argumentar perquè s’ha obtingut un valor concret, ja no podem considerar que sigui aleatori. I, així, d’un debat terminològic, podem acabar parlant de filosofia.

Per llegir-ne més: Random.orgPseudo Random vs True Random, /dev/random,

Anuncis