Pulse
IINTRO I
cada vez que quiera 'lanzar' los dados.
La sentencia
RANDOMIZE
sirve para hacer que
RND
se ponga en marcha a partir de una
posición determinada en su secuencia de números, como demuestra este programa:
10
RANDOMIZE
1
20
FOR
n=1
TO 5: PRINT RND .: NEXT
n
30 PRINT: GO TO
10
Tras cada ejecución de
RANDOMIZE
1, la secuencia de números aleatorios vuelve a
arrancar a partir de
0.0022735596.
Como parámetro de
RANDOMIZE
se puede usar
cualquier número comprendido entre l y
65535
para poner en marcha la secuencia
RND
en diferentes posiciones.
Una aplicación de
RANDOMIZE
podría ser la siguiente: supongamos que usted tiene un
programa que genera números aleatorios y que no funciona correctamente; puede usar
RANDOMIZE
para hacer que el programa genere siempre los mismos números y así po
der estudiar más sistemáticamente su comportamiento.
RANDOMIZE
a secas (o
RANDOMIZE
O) tiene un efecto diferente: elige el punto de par
tida de forma bastante impredecible. Pruebe
el
siguiente programa:
. .
10
RANDOMIZE
20
PRINT RND: GO TO
10
La secuencia que obtenemos aquí no es muy aleatoria, pero esto tiene fácil explicación.
RANDOMIZE
toma como parámetro el tiempo transcurrido desde que se encendió
el
+3.
Como en este programa no transcurre mucho tiempo entre una ejecución de
RANDOMI
ZE
y la siguiente,
RND
hace más o menos lo mismo todas las veces. Se obtendría una
«aleatoriedad» mejor reemplazando
GO TO
10 por
GO TO
20.
El siguiente programa simula el lanzamiento de monedas y cuenta el número de caras y
cruces:
10
LET
caras=O:
LET
cruces=O
20
LET
moneda=
INT ( RND
*2)
30 IF
moneda=O
THEN LET
caras=caras+1
40 IF
moneda=1
THEN LET
cruces=cruces+1
50 PRINT
caras;", ";cruces,
60
IF
cruces<>O
THEN PRINT
caras/cruces;
70
PRINT: GO TO
20
La proporción de caras y cruces debe llegar a ser aproximadamente I si se deja que el pro
grama continúe el tiempo suficiente, ya que, a la larga, es de esperar más o menos igual
número de caras que de cruces.
Sección 11. Números aleatorios
97