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.
| Palabra | Pila después |
|---|---|
50 | 50 |
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
stopCada 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.