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
最新回复