[zxspectrum] Numeri casuali

  • From: Matteo Vitturi <mattsteel@xxxxxxxxxx>
  • To: <zxspectrum@xxxxxxxxxxxxx>
  • Date: Mon, 7 Jul 2008 18:06:02 +0200

Salve a tutti. Il mio "rientro" nasce da un'osservazione che espongo di 
seguito, ma confido di rimanere ancora a lungo qui, grazie.

Stavo leggendo con interesse l'articolo sulla funzione generatore di numeri 
casuali RND apparso sul n.12 di "sinclair zx notizie" 
(http://zxspectrum.altervista.org/notizie.htm).

La conclusione dell'articolo accenna all'esistenza di "buchi" di probabilità, 
ma il comportamento descritto deriva dal fatto di usare due chiamate RND in 
sequenza per comporre le coordinate x e y da passare a PLOT. In realtà il 
"pattern" che viene mostrato a video è dovuto alla limitatezza dell'algoritmo 
insito nella RND dello Spectrum che, senza entrare in dettagli tecnici, 
semplicemente produce una serie ciclica di 65536 numeri che sono 
sufficientemente ben distribuiti da sembrare casuali ad un occhio disattento.

Il seguente programma vuole dimostrare la ciclicità di RND. Lo schermo viene 
annerito del tutto, senza lasciare puntini spenti per poi tornare completamente 
bianco (usando OVER 1).

Mentre il programma gira, l'occhio non è in grado di individuare un "pattern" 
che si ripeta: questo è il grado di "casualità" dei numeri prodotti da RND che 
lo Spectrum è in grado di generare.

   5 LET c=0
   6 OVER 1
  10 LET r=INT (RND*65536)
  11 LET c=c+1
  12 IF c>65536*2 THEN STOP
  13 PRINT#0;AT 0,0;c
  14 IF c=65536 THEN PAUSE 100
  15 LET y=INT (r/256)
  20 LET x=r-256*y
  25 IF y>175 THEN GO TO 10
  30 PLOT x,y
  40 GO TO 10

n.b. la IF y>175 a riga 25 serve solo per non bloccare il programma con una 
coordinata fuori schermo; invertendo la condizione e sottraendo 176 alla riga 
30, si può osservare il medesimo comportamento anche per la parte non visibile.

Commenti?

Mat.
_________________________________________________________________
Curiosità, trucchi e consigli per il tuo Messenger!
http://www.messenger.it

Other related posts: