# Función random en 3P

**URL:** <https://foros.velneo.com/t/funcion-random-en-3p/9752>\
**Category:** Velneo\
**Created:** [6 Febrero, 2018 10:30 UTC](https://foros.velneo.com/t/funcion-random-en-3p/9752 "2018-02-06T10:30:37Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![gontorre](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/gontorre/32/5728_2.png) [@gontorre](https://foros.velneo.com/u/gontorre)\
**Post date:** [6 Febrero, 2018 10:30 UTC](https://foros.velneo.com/t/funcion-random-en-3p/9752/1 "2018-02-06T10:30:37Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [6 Febrero, 2018 12:02 UTC](https://foros.velneo.com/t/funcion-random-en-3p/9752/2 "2018-02-06T12:02:43Z")

</div>

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:

```auto
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é
