Cómo crear una matriz de números aleatorios únicos

Seleccione idioma Seleccione idioma
Id. de artículo: 136420 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

La función RAND() FoxPro devuelve un número aleatorio entre 0 y 1. Este artículo se muestra en ejemplo de cómo:

  • Crear números aleatorios entre 5 y 10.
  • Crear fácilmente una matriz de números aleatorios entre los dos enteros.
  • Realice los números aleatorios en una matriz única.
Las funciones definidas por el usuario (UDF) enumeradas en este artículo muestran cómo.

Más información

Ejemplo paso a paso

  1. Cree un archivo de programa denominado myudf.prg que contiene el código siguiente:
       FUNCTION RANDOM
       *  Returns a random number between any 2 numbers.
       *  Syntax: =RANDOM(Lower Value, Higher Value)
       *  Example:  lnX=RANDOM(5,10)
       PARAMETER anLow,anHigh
       lnRnumber=INT((RAND()*(anHigh-anLow+1))+anLow)
       RETURN lnRnumber
    
       FUNCTION A_RANDOM
       *  Returns an array of random numbers between any 2 numbers.
       *  The array must already be defined
       *  Syntax:   =A_RANDOM(ArrayName,Lower Value, Upper Value)
       *  Example:  =A_RANDOM('gaMyarray',17,25)
       PARAMETER lcA_name,anLow,anHigh
       lnAlength=ALEN(&lcA_name)
       FOR lni=1 TO lnAlength
         &lcA_name(lni)=INT((RAND()*(anHigh-anLow+1))+anLow)
       ENDFOR
       RETURN &lcA_name
    
       FUNCTION U_RANDOM
       *  Returns an array of unique random numbers  between any 2 numbers.
       *  The array must already be defined
       *  Syntax:   =U_RANDOM(Array Name, Lower Value, Upper Value)
       *  Example:  =U_RANDOM('gaMyarray',1,10)
       PARAMETER lcA_name,anLow,anHigh
       lnAlength=ALEN(&lcA_name)
       IF lnAlength>anHigh-anLow
          lnAlength=anHigh-anLow+1
       ENDIF
       &lcA_name=.F.
       lni=1
       DO WHILE lni<=lnAlength
          lnRnumber=INT((RAND()*(anHigh-anLow+1))+anLow)
          llNextnum=.T.
          IF lnRnumber=anLow .OR. lnRnumber=anHigh
             DO CASE
             CASE lnRnumber=anLow
                lnK=1
                DO WHILE lnK>0
                   anLow=anLow+1
                   lnK=ASCAN(&lcA_name,anLow)
                ENDDO
             CASE lnRnumber=anHigh
                lnK=1
                DO WHILE lnK>0
                   anHigh=anHigh-1
                   lnK=ASCAN(&lcA_name,anHigh)
                ENDDO
             ENDCASE
          ELSE
             lnK=ASCAN(&lcA_name,lnRnumber)
             IF lnK>0
                llNextnum=.F.
             ENDIF
          ENDIF
          IF llNextnum
             &lcA_name(lni)=lnRnumber
             lni=lni+1
          ENDIF
       ENDDO
    						
  2. Guardar y cerrar myudf.prg
  3. Probar las funciones:

    1. Para imprimir un único número aleatorio entre 5 y 10, escriba lo siguiente en la ventana de comandos:
            SET PROCEDURE TO MYUDF.PRG
            ? RANDOM(5,10)
      								
    2. Para rellenar una matriz con números aleatorios, escriba lo siguiente en la ventana de comandos:
            SET PROCEDURE TO MYUDF.PRG
            DIMENSION gaMyarray(10)
            =A_RANDOM('gaMyarray',1,10)
      								
    3. Si desea rellenar una matriz con números aleatorios únicos, escriba lo siguiente en la ventana de comandos:
            SET PROCEDURE TO MYUDF.PRG
            DIMENSION gaMyarray(10)
            U_Random('gaMyarray',1,10)

Propiedades

Id. de artículo: 136420 - Última revisión: miércoles, 03 de diciembre de 2003 - Versión: 2.1
La información de este artículo se refiere a:
  • Microsoft Visual FoxPro 3.0 Standard Edition
  • Microsoft FoxPro 2.0
  • Microsoft FoxPro 2.5b for MS-DOS
  • Microsoft FoxPro 2.5a
  • Microsoft FoxPro 2.5b for MS-DOS
  • Microsoft FoxPro 2.6 para MS-DOS
  • Microsoft FoxPro 2.6a Standard Edition
  • Microsoft FoxPro 2.5b
  • Microsoft FoxPro 2.5a
  • Microsoft FoxPro 2.5b
  • Microsoft FoxPro 2.6 Standard Edition
  • Microsoft FoxPro 2.6a Standard Edition
  • Microsoft Visual FoxPro 2.5b para Macintosh
  • Microsoft Visual FoxPro 2.5c para Macintosh
  • Microsoft FoxPro 2.6a Professional Edition for Macintosh
  • Microsoft FoxPro 2.6 para SCO/UNIX
Palabras clave: 
kbmt KB136420 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 136420

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com