いくつかの助けがあります、探しているユニークなランダム生成番号。 現在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でシードして最大の分布を得る。私はあなたのコードを修正するだろうが、それは十分理解できない。エラーを返す必要があります。 –
私はまだパブでの同行を持っているという事実を除いて、コードを試してみました。 Pub1 = 4、Pub2 = 4、Pub3 = 3、Pub4 = 8と同様に、主なアイデアは、すべての数字を違うものにすること、そしてFoxProを使うことです。私はどのように理解できませんでした。 –
あなたのリビジョンを投稿してください。 – Missy