Может ли кто-нибудь помочь, Ищете уникальное случайное сгенерированное число. В настоящее время есть 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