DarwinBotsManual
Abrir la app EnglishEN

rndstore

Cambia lo que hay en una celda por un número al azar entre 0 y ese valor, con su mismo signo.

Datos

Palabra
rndstore
Familia
Escritura en memoria
Pila entera
saca 1, pone 0
Qué hace
Saca una dirección y cambia la celda por un número al azar entre 0 y lo que tenía, ambos incluidos. Con −5 da de −5 a 0.
Costo
Store dividido por el divisor de cada uno, solo si escribe
División del costo
÷ 7
Se ejecuta en
en el cuerpo de un gen (start o else) y solo si el tope de la pila booleana es verdadero o está vacía
Marca lazos
no

d rndstore saca la dirección d y reemplaza lo que hay en la celda por un entero al azar entre 0 y ese número, los dos incluidos. No toma ningún valor de la pila: el tope del sorteo es lo que ya estaba guardado.

PalabraPila después
5050
rndstore(vacía); si la celda 50 tenía 20, ahora tiene algo entre 0 y 20

Por eso casi siempre va después de un store que carga el tope:

' gira después de una espera al azar de 0 a 20 ciclos
cond
 *50 0 =
start
 100 .aimdx store
 20 50 store
 50 rndstore
stop
cond
 *50 0 >
start
 50 dec
stop

Cada vez que la cuenta llega a 0, el bot gira con .aimdx y sortea una espera nueva, que dec va bajando. Si el sorteo da 0, gira de nuevo en el ciclo siguiente.

Con un número negativo el sorteo es simétrico: si la celda tiene −5, queda algo entre −5 y 0. Eso la diferencia de rnd, que con -5 da de −4 a −1. Sobre una celda en 0 da siempre 0.

Si solo querés un número al azar para usarlo enseguida, rnd es más directo: 20 rnd 50 store sortea en el mismo rango, de 0 a 20, que 20 50 store 50 rndstore. Con negativos, como se vio, los rangos cambian.