Función random en 3P


([N4] gontorre) #1

Buenos días
Hoy me ha pasado una cosa un poco curiosa.

Quería hacer un proceso que me seleccionara 4 artículos de mi catálogo de forma aleatoria. Para ello he utilizado la siguiente fórmula: (random() % (NUM_ART-1))+1, donde NUM_ART es el número de artículos del catálogo. Hacía esto mismo 4 vaces para seleccionar 4 artículos.

El caso es que si lo hacía en tercer plano, siempre me devolvía los mismos 4 artículos. En cambio, si lo hacía en primer plano, salían artículos aleatorios.

¿Alguien sabe cual puede ser el motivo?

Un saludo


([N3] pacosatu) #2

Hola Gonzalo.

Pues es un incordio que una cosa tan trillada todavía nos dé problemas en Velneo.
Seguramente tendrá que ver con la “semilla” que usa la función C++ para la función random(). En 1P varía y en 3P será siempre la misma.
Obviamente, serán los de soporte los que tendrán que explicarte el funcionamiento interno de la función random().

Mientras tanto, puedes usar javascript como alternativa:

var nInferior = theRegister.varToInt("NMIN")
var nSuperior = theRegister.varToInt("NMAX")
Math.floor((Math.random() * (nSuperior - nInferior + 1)) + nInferior)

o más corto
Math.floor((Math.random() * (theRegister.varToInt("NMAX") - theRegister.varToInt("NMIN") + 1)) + theRegister.varToInt("NMIN"))

Pruébalo
Saludos
Paco Satué