Newsgroup: it.comp.lang.javascript
Titolo: L'indovino

Safari, col suo originalissimo bug che fra un momento vado a descrivere,
mi ordina di farmi vivo sul gruppo; dice che è maleducazione non
salutare mai gli amici. Obbedisco ^__-
Vi racconto come sono andate le cose. 
Da qualche tempo, quando genero un numero random, ho come la senzazione
di sapere in anticipo quale sarà "l'estratto", e quasi sempre ci
indovino. «Cacchio!» faccio io «ho dei poteri extrasensoriali, prevedo
il futuro, devo arricchirmi col superenalotto».
Prima di correre alla ricevitoria più vicina ho voluto mettere alla
prova i miei straordinari "poteri" lavorando con Firefox il quale -
accidenti a lui - me li ha subito demoliti.
Ora, per chi ha Safari (2.0.4/Tiger - 1.3.2/Panther ma spero "funzioni"
anche con altre versioni) ho pronto l'occorrente per un copiaincolla:
<html><head><title> test random</title></head><body>
Ecco a voi alcuni numeri random, ma cos&igrave; random che li so
gi&agrave:<br />
0 13 75 45 53 21 4 67 67 93 38 51 83 3 5 52 67 0 38 6<br />
<script type="text/javascript">
var modificare_a_piacere=20;
for (i=0; i < modificare_a_piacere; i++) {
document.writeln(Math.floor(100 * Math.random()) +" ");
}
</script> 
</body></html>
Istruzioni: *chiudere* Safari, rilanciarlo e raggiungere la paginetta.
Mi spiace per chi non ha Safari, perché un bug del genere non si era mai
visto prima: i numeri sono tutto meno che random, sembrano "memorizzati"
nel browser. Ne ho controllati a centinaia, fuoriescono *sempre gli
stessi*; ad avere tempo sarebbe curioso depositarne qualche milione su
DB una prima e una seconda volta, confrontare le due estrazioni e vedere
se da qualche parte quei numeri prendono strade diverse.
Buone cose a tutti :)
-- 
mailto: y = i
------------------------------------------------------
http://www.catarsi.it
Vivo nel terrore di non essere frainteso (Oscar Wilde)

 perché un bug del genere non si era mai visto prima: 
Questo non è del tutto vero. :)
Vedi, i numeri che tu definisci random in realtà non lo sono. Neppure
quando l'agoritmo "funziona" come ti aspetti. Tecnicamente infatti si
chiamano "numeri pseudo casuali". C'è a monte un algoritmo che simula
una sequenza di numeri casuali, e da qui il prefisso "pseudo": perché
se c'è un algoritmo dietro, è ovvio che è possibile predeterminare la
sequenza stessa.
Per evitare che ti vengano restituiti sempre gli stessi numeri, viene
di solito variato il "seme", cioé il numero che si utilizza per poter
generare tutti i successivi.
Normalmente, il seme viene settato "dietro le quinte", ma non sempre,
con il valore dell'orologio interno del computer.
In questo modo si ha l'impressione che i numeri siano sempre diversi,
e casuali.
Nel tuo caso specifico, sembrerebbe semplicemente che Safari non vada
a settare il seme. Questo succedeva anche in altri contesti (mi viene
in mente alcune versioni di Basic in cui dovevi esplicitare il seme).
Tornando al tuo bug, non è un gran problema. Nelle versioni di Safari
precedenti alla 3, puoi sempre implementare un algoritmo manualmente.
Su web ne trovi a iosa, io lo feci alle superiori per il Turbo Pascal
(l'algoritmo nativo non era sufficientemente casuale) e per lo script
di Dialog.
Mi ricordo ancora, parecchi anni fa, di un algoritmo che per simulare
ancora di più la "casualità", si affidava al "rumore bianco" presente
sull'ingresso del microfono della scheda audio. :) Probabilmente, col
tempo, avranno fatto altri algoritmi interessanti.
-- 
~ "E' impossibile svegliare chi fa finta di dormire."
(Proverbio navaho)

 Safari Version 3.0.4 (5523.15) - Direi che quel bug è già risolto :-)
BALESTRONE! :-) Era un po' che non ci s'incocciava. Mi auguro vada tutto
bene (a me insomma, sono parecchio stressato dal lavoro, però fa' vaini,
fra un po' il periodaccio dovrebbe passare). Alla prossima ^__-


 risolta.
In un certo senso mi dispiace sia stata risolta: mi divertiva :-) 
Alla prossima, thanks per tutto.


 In un certo senso mi dispiace sia stata risolta: mi divertiva :-) 
E' il comportamento di default del generatore di numeri casuali della 
libreria ANSI C. Se non specifichi un "seed" (tipicamente si usa la data 
in secondi, srand(time(NULL)) ), la sequenza di numeri casuali generata 
e` sempre la stessa. Ovviamente se il javascript non ha un modo x 
impostare il seme e' un bug, in C/C++ talvolta e` utile, per testare un 
bug puo' fare comodo che la sequenza sia sempre la stessa :)
--
Bye,
  Gabry

 bug puo' fare comodo che la sequenza sia sempre la stessa :)
Però credimi: mi son divertito. Immagina me, seduto al computer, ignaro
del bug, che dopo... boh, diciamo tre anni che uso Safari (di cui
inconciamente avevo senz'altro memorizzato la sequenza "casuale"), che a
un certo momento dico "UNO... cacchio, è uscito l'uno; DIACIANNOVE...
ri-cacchio è uscito il 19. A me il mago oMerda mi fa una sega :-)
