close all &&關閉所有型別的檔案
&&以下程式段為姓名庫產生隨機順序號
USE xmk.dbf &&使用xmk.dbf檔案
DO WHILE .not. EOF()
REPLACE sjh WITH INT(RAND()*10000)
SKIP
ENDDO &&結束DO函式
USE &&關閉xmk.dbf
這里的為姓名庫產生隨機順序號是什么意思?有什么用?
我不明白。
排考場是按照上次考試成績排的,為什么還要用隨機順序號?
uj5u.com熱心網友回復:
INT(RAND()*10000)1.首先,RAND()產生的是 0 到 0.9999999...的數值,
2.其次,RAND() * 10000,就相當0 到 9999.999...
3.再次,INT(RAND()*10000,就是 0 到 9999
uj5u.com熱心網友回復:
其實,上面的還不是真正的隨機的,是有很多重復的.uj5u.com熱心網友回復:
VFP這個函式產生的并不是真正的亂數,不光光是重復的問題,他的亂數產生規律(順序)是保持不變的。uj5u.com熱心網友回復:
這個產生隨機順序有什么用呢?
uj5u.com熱心網友回復:
安排考場 座位號uj5u.com熱心網友回復:
沒有隨機值,你一個一個指定啊uj5u.com熱心網友回復:
沒有完整代碼,可能說不清楚另外,別人的代碼不一定就合理
uj5u.com熱心網友回復:
估計是為了生成測驗資料,沒什么其他用。uj5u.com熱心網友回復:
學業考試那種的用的隨機吧?uj5u.com熱心網友回復:
學習,估計是為了生成測驗資料,沒什么其他用。uj5u.com熱心網友回復:
set talk offclose all
clear
sele 1
use 考場名單.dbf
go top
num=RECC()
temp=num
DIMENSION zkz(num)
for i=1 to num
zkz(i)= "1805"+padl(i,4,"0") &&生成順序的準考證號
endfor
sele 1
go top
rand(-1)
for i=1 to num
r=int(round(rand(),10)*temp)+1 &&在剩下的準考證中隨機抽取一個
repla zkzh with zkz(r)
temp=temp-1 &&準考證號少一個
for j=r to temp &&組成去除已用的準考證的新陣列
zkz(j)=zkz(j+1)
endfor
skip
endfor
go top
uj5u.com熱心網友回復:
試試我這個吧,你的那個不行。uj5u.com熱心網友回復:
如果是用上次成績排的,那么用亂數也可以避免產生同分情況不隨機情況如果要隨機,一定要用到rand(-1)這個,否則的隨機也就是0~9的隨機
uj5u.com熱心網友回復:
我寫過這樣隨機排考場座位的程式,綜合以上幾位所說,我認為:
第一、在一個do~while回圈里面使用 REPLACE sjh WITH INT(RAND()*10000),顯得多余了。
第二、“REPLACE sjh WITH INT(RAND()*10000)” 不是真隨機。
建議使用雙隨機解決:
rand(-1) &&初始化隨機函式
REPLACE sjh WITH INT(RAND()*10000) all &&這里直接使用 ALL 整體替換就可以,沒必要使用回圈。
==================================================================
USE xmk.dbf &&使用xmk.dbf檔案
rand(-1) &&初始化隨機函式
REPLACE sjh WITH INT(RAND()*10000) all &&這里直接使用 ALL 整體替換就可以,沒必要使用回圈。
USE &&關閉xmk.dbf
這樣就能完成你發的程式段的功能,隨機性應該更好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/59366.html
標籤:VFP
