Cadena aleatoria


([N4] gontorre) #1

Buenos días

Quiero crear una función que me devuelva una cadena de caracteres aleatorios de una determinada longitud. Para ello tengo dos funciones:

  • ALEATORIO_RANGO(N_MIN,N_MAX) que devuelve (random() % ( N_MAX - N_MIN) ) + N_MIN , es decir un número aleatorio entre los valores dados.

  • CADENA ALEATORIA(N_LONG) que forma la cadena con un bucle FOR, llamando a la función anterior y formando la cadena como C_CADENA+getAsciiChar(fun:ALEATORIO_RANGO@sceRecursos.app(65,90), “Windows-1252”)

El caso es que después de probarla, los valores no son del todo aleatorios, parece que lo son, pero ciertas cadenas se repiten. ¿A alguien se le ocurre lo que puede ser? Os pongo imágenes de las funciones y del resultado que me da.

Gracias y un saludo

Gonzalo Torre


([N4] gontorre) #2

Ahora las imágenes





([N3] pacosatu) #3

Hola Gonzalo.

En realidad los valores sí son aleatorios, el problema es que la secuencia de los aleatorios se repite de un dia para otro.
Se supone que la semilla que utiliza Velneo para generar aleatorios es la hora del sistema, por lo tanto la cadena no debería de repetirse.

Tendrías que consultar a Soporte para que el experto en C++ nos aclare el tema.

De todas formas la función Random() no está diseñada para crear Identificadores únicos.

Mientras tanto puedes probar la versión Javascript con:
Set (N_RESULTADO, /JAVASCRIPT/Math.floor((Math.random() * (N_MAX - N_MIN + 1)) + N_MIN))

Revisa también tu función ALEATORIO_RANGO() ya que nunca devolverá el valor N_MAX, por eso nunca tienes la Z en las cadenas.

Saludos
Paco Satué