Generar numeros aleatorios en VFP

6,626 views
Skip to first unread message

Roberto Lemos

unread,
May 17, 2011, 12:22:58 PM5/17/11
to Comunidad de Visual Foxpro en Español
Cómo puedo hacer para generar numeros aleatorios en VFP, me piden
generar codigos aleatorios mensuales pora algunas operaciones
realizadas, el problema es que debo verificar que el codigo aleatorio
generado no este ya registrado?

Jorge Montúfar

unread,
May 17, 2011, 12:27:09 PM5/17/11
to publice...@googlegroups.com
CON RANDOM, Y LUEGO BUSCAR QUE NO EXISTA ESE NUMERO
WebRep
Overall rating
 

Roberto Lemos

unread,
May 17, 2011, 12:33:30 PM5/17/11
to publice...@googlegroups.com
Y eso no es muy tedioso, tendria que hacer un Bucle y cada numero generado buscarlo hasta que el generado

Walter R. Ojeda Valiente

unread,
May 17, 2011, 12:36:03 PM5/17/11
to publice...@googlegroups.com
La función RAND() te devolverá un número aleatorio entre 0 (incluído) y 1 (excluído).

Si quieres números aleatorios entre 0 y 99 (por ejemplo), entonces deberás multiplicar el valor de RAND() por 100.

Si quieres números enteros, entonces deberás usar la función INT()

Por ejemplo:

? INT(RAND() * 100)     && Números aleatorios entre 0 y 99, incluídos ambos

? 1 + INT(RAND() * 100)     && Números aleatorios entre 1 y 100, incluídos ambos

Como ves, hay solamente 100 valores posibles así que luego de unas cuantas "tiradas" los números volverán a repetirse. Para saber si se repitieron o no debes guardar los números obtenidos en una tabla y luego verificar si se encuentran en esa tabla.

Saludos.

Walter.



> Date: Tue, 17 May 2011 09:22:58 -0700
> Subject: [vfp] Generar numeros aleatorios en VFP
> From: lemo...@gmail.com
> To: publice...@googlegroups.com

Jorge Montúfar

unread,
May 17, 2011, 12:36:35 PM5/17/11
to publice...@googlegroups.com
REVISA ESTE CODIGO DERREPENTE TE SIRVE ES DEL HELP DE VFP9


CLOSE DATABASES
CREATE TABLE Random (cValue N(3))
FOR nItem = 1 TO 10  && Append 10 records,
   APPEND BLANK
   REPLACE cValue WITH 1 + 100 * RAND( )  && Insert random values
ENDFOR
CLEAR
LIST  && Display the values
gnMaximum = 1  && Initialize minimum value
gnMinimum = 100  && Initialize maximum value
SCAN
   gnMinimum = MIN(gnMinimum, cValue)
   gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'The minimum value is: ', gnMinimum  && Display minimum value
? 'The maximum value is: ', gnMaximum  && Display maximum value
CLEAR
gnLower = 1
gnUpper = 10
? INT((gnUpper - gnLower + 1) * RAND( ) + gnLower)

Edgar Acevedo

unread,
May 17, 2011, 12:36:45 PM5/17/11
to publice...@googlegroups.com
Guardas los números aleatorios en una tabla "indexada" por dicho número.  Ejemplo:

CREATE TABLE ACTIVAR (NUMACT N(6))                              &&Crear tabla ACTIVAR con campo llamado NUMACT numérico de 6 cifras).
INDEX TAG NUMACT ON NUMACT                                         &&Crear el índice NUMACT basado en el campo NUMACT

M.AleNum = INT(RAND() * 1000000)                                        &&Generas un número aleatorio
IF NOT SEEK(M.AleNum, "ACTIVAR")                                     &&Si NO SE ENCUENTRA el número generado en tabla ACTIVAR...
   INSERT INTO ACTIVAR (NUMACT) VALUES (M.AleNum)      &&Se agrega dicho número a la tabla.
ENDIF





El 17 de mayo de 2011 10:22, Roberto Lemos <lemo...@gmail.com> escribió:

Jorge Montúfar

unread,
May 17, 2011, 12:37:40 PM5/17/11
to publice...@googlegroups.com
ESTE ULTIMO EJEMPLO DE EDAR ESTA MUY BUENO

Roberto Lemos

unread,
May 17, 2011, 12:41:00 PM5/17/11
to publice...@googlegroups.com
Si es lo que pensaba hacer,
 
gracias a todos por sus aportes
 
----- Original Message -----
Sent: Tuesday, May 17, 2011 11:37 AM
Subject: Re: [vfp] Generar numeros aleatorios en VFP

José Guevara

unread,
Feb 5, 2020, 8:35:55 PM2/5/20
to Comunidad de Visual Foxpro en Español
Hola a todos saludos desde Riobamba Ecuador
Un pequeño ejemplo que voy a plicar en un programa de rifa en mi empresa con una tabla de 250000 probabilidades
menor=10
mayor=25
n=(mayor-menor+1)*RAND()+menor
?INT(n)
 

mpulla

unread,
Feb 6, 2020, 1:05:32 AM2/6/20
to Comunidad de Visual Foxpro en Español
Hola Jose.

con postgresql puedes hacer

select campo1, campo2, ...
 from mitabla
 Order By ramdon();

con sql server hay algo parecido, en este momento no lo recuerdo.

Saludos.
Mauricio
Reply all
Reply to author
Forward
0 new messages