看到一段别人写的关于学生排考场的代码,其中有一段是产生随机顺序号。不懂,求解释

VFP_learner 2018-05-06 07:14:51
close all &&关闭所有类型的文件
&&以下程序段为姓名库产生随机顺序号
USE xmk.dbf &&使用xmk.dbf文件
DO WHILE .not. EOF()
REPLACE sjh WITH INT(RAND()*10000)
SKIP
ENDDO &&结束DO函数
USE &&关闭xmk.dbf

这里的为姓名库产生随机顺序号是什么意思?有什么用?
我不明白。
排考场是按照上次考试成绩排的,为什么还要用随机顺序号?
...全文
2179 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
fdz81 2019-06-09
  • 打赏
  • 举报
回复
我写过这样随机排考场座位的程序,综合以上几位所说, 我认为: 第一、在一个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 这样就能完成你发的程序段的功能,随机性应该更好。
石中剑 2019-04-27
  • 打赏
  • 举报
回复
如果是用上次成绩排的,那么用随机数也可以避免产生同分情况不随机情况
如果要随机,一定要用到rand(-1)这个,否则的随机也就是0~9的随机
保持胜利 2019-01-27
  • 打赏
  • 举报
回复
试试我这个吧,你的那个不行。
保持胜利 2019-01-27
  • 打赏
  • 举报
回复
set talk off close 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
weixin_42904457 2018-12-25
  • 打赏
  • 举报
回复
学习,估计是为了生成测试数据,没什么其他用。
run0 2018-11-09
  • 打赏
  • 举报
回复
学业考试那种的用的随机吧?
卖水果的net 2018-05-25
  • 打赏
  • 举报
回复
估计是为了生成测试数据,没什么其他用。
liups 2018-05-24
  • 打赏
  • 举报
回复
没有完整代码,可能说不清楚 另外,别人的代码不一定就合理
wwle 2018-05-24
  • 打赏
  • 举报
回复
没有随机值,你一个一个指定啊
wwle 2018-05-24
  • 打赏
  • 举报
回复
安排考场 座位号
mywisdom88 2018-05-07
  • 打赏
  • 举报
回复
其实,上面的还不是真正的随机的,是有很多重复的.
mywisdom88 2018-05-07
  • 打赏
  • 举报
回复
INT(RAND()*10000) 1.首先,RAND()产生的是 0 到 0.9999999...的数值, 2.其次,RAND() * 10000,就相当0 到 9999.999... 3.再次,INT(RAND()*10000,就是 0 到 9999
VFP_learner 2018-05-07
  • 打赏
  • 举报
回复
引用 1 楼 mywisdom88的回复:
INT(RAND()*10000) 1.首先,RAND()产生的是 0 到 0.9999999...的数值, 2.其次,RAND() * 10000,就相当0 到 9999.999... 3.再次,INT(RAND()*10000,就是 0 到 9999
这个产生随机顺序有什么用呢?
fojiao8745 2018-05-07
  • 打赏
  • 举报
回复
VFP这个函数产生的并不是真正的随机数,不光光是重复的问题,他的随机数产生规律(顺序)是保持不变的。

2,741

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧