rand()

rand(<valor mínimo>, <valor máximo>)

Retorna:

Un valor numérico aleatorio.

Descripción:

Devuelve un número aleatorio (escogido al azar) entre el valor mínimo y el valor máximo, ambos incluidos.

Esta función se suele utilizar para establecer todos los parámetros que se quiere que varíen en un juego de una partida a otra; por ejemplo, se pueden inicializar las coordenadas de un enemigo con números aleatorios, para que en cada partida pueda aparecer en una posición diferente.

Otra utilidad de esta función es cuando se quiere que una acción no suceda siempre, sino que tenga una cierta probabilidad de suceder; esto se suele implementar con una sentencia del tipo:

  IF (rand(0, 100)<25)
      // Acción ...
  END

En este caso la acción se realizaría con un promedio del 25 por ciento de las veces que se ejecutara la sentencia IF, ya que, al obtener un número al azar entre 0 y 100, éste sólo sería un número menor que 25, aproximadamente una cuarta parte de las ocasiones.

Programa ejemplo:
PROGRAM ejemplo_rand;

PRIVATE
    tabla[15];
    contador;

BEGIN
    write (0, 0, 192, 0, "Pulse [ESPACIO] para hallar valores aleatorios.");
    FROM contador=0 TO 15;
        write_int(0, 0, contador*10, 0, offset tabla[contador]);
    END
    LOOP
        IF (scan_code==_space)
            FROM contador=0 TO 15;

                // Se eligen valores aleatorios entre -100 y 100
                tabla[contador] = rand(-100, 100);

            END
        END
        FRAME;
    END
END


En el ejemplo se crea una tabla con 16 datos (del 0 al 15). En cada iteración del bucle principal se comprueba si se ha pulsado la barra espaciadora, en cuyo caso se rellenan los 16 datos de la tabla con valores aleatorios entre -100 y 100, elegidos con la función rand().


Por defecto, en cada ejecución del programa los valores que devuelva la función rand() serán completamente diferentes. Si se quiere que la serie de números sea siempre una misma, se puede utilizar para ello la función rand_seed() especificando un número, tras el cual la serie de números que devuelva la función rand() estará siempre predeterminada.


Ver: rand_seed()