# Rango de Aleatorios

**URL:** <https://foros.velneo.com/t/rango-de-aleatorios/1877>\
**Category:** Velneo\
**Created:** [28 Mayo, 2010 08:23 UTC](https://foros.velneo.com/t/rango-de-aleatorios/1877 "2010-05-28T08:23:29Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![Javier\_Duran\_Garcia](https://avatars.discourse-cdn.com/v4/letter/j/ce73a5/32.png) [@Javier\_Duran\_Garcia](https://foros.velneo.com/u/Javier_Duran_Garcia)\
**Post date:** [28 Mayo, 2010 08:23 UTC](https://foros.velneo.com/t/rango-de-aleatorios/1877/1 "2010-05-28T08:23:29Z")

</div>

Buenos días a todos.

Estoy intentando sacar un numero aleatorio entre un rango "1 - 41" pero la funcion de random() no me funciona muy alla.

Si pongo: random()&nbsp;&nbsp;&nbsp;&nbsp; - Salen aleatorios de minimo 3000

Si pongo: random() % 10 &nbsp;&nbsp;&nbsp; - Salen aleatorios

Si pongo: random() = 41&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - No sale nada, 0

&nbsp;

Segun la info que hay aqui en la web al poner la 3ª opcion tendria que salir un aleatorio entre 0 y 41 pero solo sale 0.

Quiero sacar un aleatorio para seleccionar un registro de una tabla, si no se puede con random() hay alguna otra opcion?

&nbsp;

--

**Ate. Javier Durán García**  
 Visita mi web [NexusFireMan](http://www.nexusfireman.es/)  
[![](http://www.nexusfireman.es/wp-content/uploads/icons/RSS.png)](http://feeds.feedburner.com/Nexusfireman)[![](http://www.nexusfireman.es/wp-content/uploads/icons/Facebook.png)](http://www.facebook.com/profile.php?id=100000617262635)[![](http://www.nexusfireman.es/wp-content/uploads/icons/Linkeding.png)](http://es.linkedin.com/in/javierdurangarcia)[![](http://www.nexusfireman.es/wp-content/uploads/icons/Twitter.png)](http://twitter.com/jdurangarcia)[![](http://www.nexusfireman.es/wp-content/uploads/icons/Vimeo.png)](http://www.vimeo.com/nexusfireman)[![](http://www.nexusfireman.es/wp-content/uploads/icons/Youtube.png)](http://www.youtube.com/user/NexusFireMan)

---

<div class="post-metadata">

**Author:** ![jorge-velasco](https://avatars.discourse-cdn.com/v4/letter/j/3bc359/32.png) [@jorge-velasco](https://foros.velneo.com/u/jorge-velasco)\
**Post date:** [28 Mayo, 2010 08:47 UTC](https://foros.velneo.com/t/rango-de-aleatorios/1877/2 "2010-05-28T08:47:05Z")

</div>

Buenas Javier.

Me da que no le puedes poner límites al entero que te genera.

En cuanto a la expresión random() = 41 es errónea. En el manual lo ponen como ejemplo de número resultante: random() = 123.

La verdad es que no se me ocurre cómo poder limitar ese rango!!! :(

Un saludo.

&nbsp;

&nbsp;

**Jorge Velaso Fernández**

**jvelasco@theseedsc.com**

**www.theseedsc.com**

---

<div class="post-metadata">

**Author:** ![rcueto](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/rcueto/32/5190_2.png) [@rcueto](https://foros.velneo.com/u/rcueto)\
**Post date:** [28 Mayo, 2010 08:52 UTC](https://foros.velneo.com/t/rango-de-aleatorios/1877/3 "2010-05-28T08:52:22Z")

</div>

Estimado Javier:

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.

Un saludo,

rcueto.velneo

---

<div class="post-metadata">

**Author:** ![Javier\_Duran\_Garcia](https://avatars.discourse-cdn.com/v4/letter/j/ce73a5/32.png) [@Javier\_Duran\_Garcia](https://foros.velneo.com/u/Javier_Duran_Garcia)\
**Post date:** [28 Mayo, 2010 08:58 UTC](https://foros.velneo.com/t/rango-de-aleatorios/1877/4 "2010-05-28T08:58:42Z")

</div>

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.

Gracias.

 ![image](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/1X/08d9239c9320998981409d090b70feb60b975562.PNG)

 ![image](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/1X/08d9239c9320998981409d090b70feb60b975562.PNG)

 ![image](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/1X/08d9239c9320998981409d090b70feb60b975562.PNG)

---

<div class="post-metadata">

**Author:** ![agustinsmv](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/agustinsmv/32/3809_2.png) [@agustinsmv](https://foros.velneo.com/u/agustinsmv)\
**Post date:** [28 Mayo, 2010 09:13 UTC](https://foros.velneo.com/t/rango-de-aleatorios/1877/5 "2010-05-28T09:13:28Z")

</div>

Hola Javier. No sé exactamente cómo se hace en v7 pero en v6 es bastante sencillo.

Si necesito sacar un número aleatorio entre 1 y 41 es sencillo:

1. sacar un número aleatorio

2 Obtener el resto de la división de ese número entre 41 ( en v6&nbsp;&nbsp; aleatorio r 41 , está en las funciones lógicas en el asistente para fórmulas )

3 a ese resto sumarle 1 para que no sea 0 y que también salga 41, dado que el resto de esa división varía en el rango de 0 a 40

Espero que te sirva y que yo me haya explicado bien.

Un saludo

&nbsp;

---

<div class="post-metadata">

**Author:** ![jorge-velasco](https://avatars.discourse-cdn.com/v4/letter/j/3bc359/32.png) [@jorge-velasco](https://foros.velneo.com/u/jorge-velasco)\
**Post date:** [28 Mayo, 2010 09:40 UTC](https://foros.velneo.com/t/rango-de-aleatorios/1877/6 "2010-05-28T09:40:52Z")

</div>

Buenas.

Ampliando lo dicho por Agustín tambien podemos utilizar una función javascript que he encontrado en el google.

Me explico:

1.- Te creas una función para poder utilizar desde cualquier sitio. (ver primera imagen)

2.- Pones en Fórmula texto del script (ver segunda imagen)

3.- Ya sólo te queda llamarla desde donde quieras (ver tercera imagen)

Un saludo.

&nbsp;

&nbsp;

&nbsp;

**Jorge Velasco Fernández**

**jvelasco@theseedsc.com**

**www.theseedsc.com**

[attachment=9824,952] [attachment=9824,953] [attachment=9824,954]

---

<div class="post-metadata">

**Author:** ![Javier\_Duran\_Garcia](https://avatars.discourse-cdn.com/v4/letter/j/ce73a5/32.png) [@Javier\_Duran\_Garcia](https://foros.velneo.com/u/Javier_Duran_Garcia)\
**Post date:** [28 Mayo, 2010 09:54 UTC](https://foros.velneo.com/t/rango-de-aleatorios/1877/7 "2010-05-28T09:54:01Z")

</div>

Gracias a los 2.

Lo probare ahora a ver que sale :)

---

<div class="post-metadata">

**Author:** ![Javier\_Duran\_Garcia](https://avatars.discourse-cdn.com/v4/letter/j/ce73a5/32.png) [@Javier\_Duran\_Garcia](https://foros.velneo.com/u/Javier_Duran_Garcia)\
**Post date:** [28 Mayo, 2010 12:12 UTC](https://foros.velneo.com/t/rango-de-aleatorios/1877/8 "2010-05-28T12:12:28Z")

</div>

Gracias me ha funcionado perfecto.

Ahora solo me queda el poder seleccionar el registro correspondiente al numero de la tabla. Que sera facil (espero)

Lo unico es que el numero obtenido es "24.000000" Espero que los "0" no sean problema para la seleccion de registros en tabla :)

Gracias a los 2

---

<div class="post-metadata">

**Author:** ![Paco.Velactiva](https://avatars.discourse-cdn.com/v4/letter/p/d2c977/32.png) [@Paco.Velactiva](https://foros.velneo.com/u/Paco.Velactiva)\
**Post date:** [28 Mayo, 2010 12:46 UTC](https://foros.velneo.com/t/rango-de-aleatorios/1877/9 "2010-05-28T12:46:45Z")

</div>

Hola Javier,

Seguramente si te dará problemas, puedes limpiar

los ceros con, la función estándar numérica round(“24.000000″, “0″ )

&nbsp;

Un saludo

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![Paco.Velactiva](https://avatars.discourse-cdn.com/v4/letter/p/d2c977/32.png) [@Paco.Velactiva](https://foros.velneo.com/u/Paco.Velactiva)\
**Post date:** [28 Mayo, 2010 12:48 UTC](https://foros.velneo.com/t/rango-de-aleatorios/1877/10 "2010-05-28T12:48:09Z")

</div>

Hola Javier,

Seguramente si te dará problemas, puedes limpiar

los ceros con, la función estándar numérica round(“24.000000″, “0″ )

&nbsp;

Un saludo

&nbsp;

---

<div class="post-metadata">

**Author:** ![Javier\_Duran\_Garcia](https://avatars.discourse-cdn.com/v4/letter/j/ce73a5/32.png) [@Javier\_Duran\_Garcia](https://foros.velneo.com/u/Javier_Duran_Garcia)\
**Post date:** [28 Mayo, 2010 18:23 UTC](https://foros.velneo.com/t/rango-de-aleatorios/1877/11 "2010-05-28T18:23:55Z")

</div>

Gracias por el apunte @Paco, no lo habia pensado.

---

<div class="post-metadata">

**Author:** ![desarrollosvfp](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/desarrollosvfp/32/4064_2.png) [@desarrollosvfp](https://foros.velneo.com/u/desarrollosvfp)\
**Post date:** [22 Julio, 2015 11:01 UTC](https://foros.velneo.com/t/rango-de-aleatorios/1877/12 "2015-07-22T11:01:28Z")

</div>

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)

SET(NUM\_ALEATORIO, 1+ round((41-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.

[http://velneo.es/info\_v7\_717\_es/velneo\_vdevelop\_v7/proyectos\_objetos\_y\_editores/asistente\_de\_formulas/funciones\_estandar/funciones\_numericas/random/](http://velneo.es/info_v7_717_es/velneo_vdevelop_v7/proyectos_objetos_y_editores/asistente_de_formulas/funciones_estandar/funciones_numericas/random/)

🙂

---

<div class="post-metadata">

**Author:** ![giovanni-2](https://avatars.discourse-cdn.com/v4/letter/g/ecccb3/32.png) [@giovanni-2](https://foros.velneo.com/u/giovanni-2)\
**Post date:** [22 Julio, 2015 14:26 UTC](https://foros.velneo.com/t/rango-de-aleatorios/1877/13 "2015-07-22T14:26:15Z")

</div>

jaja muchas gracias por el aporte.

Una respuesta mucho mas concreta que la del soporte.

---

<div class="post-metadata">

**Author:** ![manuel.rd](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/manuel.rd/32/3508_2.png) [@manuel.rd](https://foros.velneo.com/u/manuel.rd)\
**Post date:** [22 Julio, 2015 15:42 UTC](https://foros.velneo.com/t/rango-de-aleatorios/1877/14 "2015-07-22T15:42:03Z")

</div>

Según la documentación

> RAND\_MAX es un valor establecido en las librerias de C++ del sistema operativo y no debería ser inferior a 32767

Así que podría ser superior, supongo que dependerá de los bits del sistema

---

<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:** [22 Julio, 2015 17:33 UTC](https://foros.velneo.com/t/rango-de-aleatorios/1877/15 "2015-07-22T17:33:34Z")

</div>

Hola.

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 )

```

Probadla.  
Saludos  
Paco Satué
