SoloCodigo

Programación General => Visual FoxPro => Mensaje iniciado por: rohue en Martes 5 de Mayo de 2009, 05:47

Título: numeros aleatorios en visual fox pro 9
Publicado por: rohue en Martes 5 de Mayo de 2009, 05:47
este es mi primera vez en un foro d verdad wiii k emocion  ^_^

bueno psss espero q me puedan ayudar, miren tengo k hacer q un boton cree un numero aleatorio y pss en el yahoo me digeron esto:
"Y el random es aun mas facil, tenes que usar rnd y randomize"
pero no le entendi si me pudieran explicar mas o dar el codigo para generar numeros random entre 1-10 se los agradeceria  :hola:

buneno y lo q tengo es un boton y un text1 por si sirve de algo XD

eso es todo
Título: Re: numeros aleatorios en visual fox pro 9
Publicado por: emuller en Jueves 7 de Mayo de 2009, 00:31
Hola y bienvenido  :beer:

Tenés que usar la función RAND([semilla]).
Esta función retorna un valor entre 0 y 1 y utiliza el valor de semilla para generar los valores pseudoaleatorios, por lo que simpre retornará la misma secuencia de valores si usas la misma semilla (según la ayuda, si no colocas ninguna semilla fox utiliza 100,001 como semilla por defecto).
Para que genere siempre una secuencia diferente (y se parezca a una "verdadera" función aleatoria) debes utilizar una semilla generada a partir del valor de reloj de la pc (q es lo que hace el randomize en otros lenguajes). En visual fox pro 9 ésto se logra utilizando una semilla negativa y se recomienda (pasa en todos los lenguajes) que sólo la utilices la primera vez que llamas a RAND y luego no utilices ninguna. O sea que la primera vez llamas a RAND con, por ejemplo, RAND(-1) y las siguientes veces solo utiliza RAND().

Para generar números aleatorios entre 1 y 10 me robé el siguiente ejemplo de la ayuda del visual fox pro 9 :rolleyes: :

Código: Text
  1. gnLower = 1 && Valor minimo
  2. gnUpper = 10 && Valor maximo
  3.  
  4. valor =  INT((gnUpper - gnLower + 1) * RAND( ) + gnLower)
  5.  

Este código devuelve solo valores enteros; si quieres, por ejemplo, que pueda salir 1.3 debes sacar la función INT.
Ten cuidado en que si por casualidad RAND da 1 el valor obtenido será 11: (10 - 1 + 1)*1 + 1. Debes controlar esa posibilidad.