有人可以帮忙,寻找唯一的随机生成的数字。 当前有4个酒吧,如果数据超过4个酒吧,则需要随机选择酒吧并将该值放到Pub1 Pub2 Pub3和Pub4字段中。通过使用FoxPro找不到解决方案。FoxPro唯一随机数
SELE A
USE TEST
REPL PUB1 WITH "" ALL
REPL PUB2 WITH "" ALL
REPL PUB3 WITH "" ALL
REPL PUB4 WITH "" ALL
REPL RANDOM1 WITH "" ALL
REPL RANDOM2 WITH "" ALL
REPL RANDOM3 WITH "" ALL
REPL RANDOM4 WITH "" ALL
REPL RANDOMLOG WITH "" ALL
SELE B
USE WHATPUB
SELE A
GO TOP
DO WHILE !EOF()
cBRANCH=BRANCH
SELE B
SET FILTER TO BRANCH=cBRANCH
COUN TO nBRANCHQTY
IF nBRANCHQTY<=4
FOR loop=1 TO nBRANCHQTY
SELE B
LOCA FOR loop=FT_URN
IF FOUND()
cPUBID=PUBID
SELE A
cFLD1="PUB"+LTRIM(STR(loop))
REPL (cFLD1) WITH cPUBID
ENDIF
NEXT loop
ELSE
SELE A
FOR loop=1 TO 4
SELE A
DO WHILE nRANDOMPUB>nBRANCHQTY
nRANDOMPUB=INT(RAND()*10)+1
ENDDO
SELE B
LOCATE FOR nRANDOMPUB=FT_URN
IF FOUND()
cPUBID=PUBID
SELE A
cFLD1="PUB"+LTRIM(STR(loop))
cFLD2="RANDOM"+LTRIM(STR(loop))
REPL (cFLD1) WITH cPUBID
REPL (cFLD2) WITH LTRIM(STR(nRANDOMPUB))
ENDIF
nRANDOMPUB=9999999
NEXT loop
ENDIF
SELE A
SKIP
ENDDO
GO TOP
BROW FIELDS BRANCH,RANDOMLOG,RANDOM1,PUB1,RANDOM2,PUB2,RANDOM3,PUB3,RANDOM4,PUB4
如果有什么是不可理解的,请让我知道。
rand()是随机数发生器。使用-1初始化以获得最大分布。我会修改你的代码,但这是不可理解的。应该给错误。 –
我已经尝试过代码,workig很好,除了我仍然在pubs中发布的事实。像Pub1 = 4,Pub2 = 4,Pub3 = 3,Pub4 = 8。主要想法是使所有数字不同,并通过使用FoxPro ..我无法理解如何。 –
请发布您的修订。 – Missy