En los ejemplos de las funciones de fórmulas siempre ponemos un ejemplo de uso de la fórmula y el resultado que da. Ejemplo:
len("abc") = 3
En el caso de la funcion random(), como ésta devuelve un número aleatorio, hemos puesto como ejemplo de resultado 123 (es decir, un número cualquiera):
randon() = 123
Por tanto, no quiere decir que igualando en una fórmula la funcion random a un número se obtenga un nº comprendido entre unos límites concretos, sino que si en una fórmula usamos la función random() obtendrremos un número, como por ejemplo, 123.
Entonces no hay ninguna forma de obtener un numero aleatorio entre un rango de valores?
O la selección de un registro aleatorio en una tabla?
En MySQL hay una instrucción para la obtención de un registro aleatorio y en la mayoría de lenguajes de programación se pueden obtener numero aleatorios ente rangos o en su defecto la creación de un bucle "While" o similar para su obtención.
No he encontrado una forma clara de hacerlo.
Si alguien lo sabe le agradecería me dijera como se hace.
Para obtener un número aleatorio entre 2 números, sin usar funciones, la fórmula es:
Para un aleatorio entre 1 y 41: 1+ round((41-1)* random()/32767, 0)
Aleatorio entre 3 y 5: 3+ round((5-3)* random()/32767, 0)
Aleatorio entre 2 y 7: 2+ round((7-2)* random()/32767, 0)
Aleatorio entre 1 y 9: 1+ round((9-1)* random()/32767, 0)
Explicación: debido a que random() genera un número aleatorio entre 0 y 32767, el cociente de random()/32767 será un número entre 0 y 1. Si tomamos el caso de (7-2), el producto (7-2)* random()/32767 será máximo 5, mínimo 0. Al sumarle 2 dará máximo 7, mínimo 2.
La forma más sencilla con Velneo, e independiente del valor que retorne la función random(), es la siguiente:
Función: FUN_ALEATORIO_RANGO
Rem (Parámetros NMIN y NMAX)
Rem (Devuelve un valor aleatorio en el rango NMIN y NMAX)
Set ( NRESULTADO, ( random() % ( NMAX - NMIN) ) + NMIN )
Set dato de retorno ( NRESULTADO )