主题:请教 rand( ) 函数的用法!
hsw8208
[专家分:20] 发布于 2009-09-15 08:43:00
RAND([nSeedValue])
参数
nSeedValue
指定种子数值,它决定 rand( ) 函数返回的数值序列。
在第一次发出 rand( ) 函数时用种子数 nSeedValue,然后再使用不带 nSeedValue 参数的 rand( ) 函数,将得到一个随机数序列。如果第三次发出 rand( ) 函数时使用同样的种子数值 nSeedValue,那么 RAND( )返回同样的随机数序列。
如果第一次发出 RAND( ) 时使用的 nSeedValue 参数是负数,那么将使用来自系统时钟的种子值。若要获得随机程度最大的数字序列,可以最初用一个负的参数发出 rand( ) 函数,然后再不带参数发出 rand( ) 函数。
如果省略了 nSeedValue 参数,rand( ) 函数使用默认的种子数值 100001。
参考手册是上这么解释的,不是很理解?种子数怎么理解?我看了几个应用例子,用这个函数的时候常和一具体数作运算如,100 * RAND(),或 RAND()*10000 请各位老师给讲一下!
最后更新于:2009-09-15 08:51:00
回复列表 (共8个回复)
沙发
alpen [专家分:1140] 发布于 2009-09-15 16:52:00
不算老师,探讨'用这个函数的时候常和一具体数作运算如,100 * RAND(),或 RAND()*10000'
因为rand( ) 函数,返回一个 0 到 1 之间的随机数。所以需要10位数就用:100 * RAND(),或 需要1000位数:就用RAND()*10000,依此类推'.
下面的示例使用 rand( ) 函数创建了包含 10 条随机记录的表,然后使用 min( ) 和 max( ) 函数来显示表中的最大值和最小值。
close databases
create table random (cvalue n(3))
for nitem = 1 to 10 &&追加 10 个记录。
append blank
replace cvalue with 1 + 100 * rand( ) && 插入随机数值。
endfor
clear
list && 显示数值
gnmaximum = 1 && 初始化最小值
gnminimum = 100 && 初始化最大值
scan
gnminimum = min(gnminimum, cvalue)
gnmaximum = max(gnmaximum, cvalue)
endscan
? 'the minimum value is: ', gnminimum && 显示最小值
? 'the maximum value is: ', gnmaximum && 显示最大值
板凳
homayzh [专家分:7040] 发布于 2009-09-15 17:03:00
呵。我也用过rand()
我不会用。每次都是一样,如果
第N次 值
1 0.85
2 0.55
3 0.91
4 0.83
5 0.24
.....
.....
你下次再打开VFP,继续用rand()
结果 还是
第N次 值
1 0.85
2 0.55
3 0.91
4 0.83
5 0.24
.....
.....
所以,我使用它,是和var(sys(3))结合使用,效果不错。
3 楼
homayzh [专家分:7040] 发布于 2009-09-15 17:06:00
一楼 你的结果每一次结果都是一样的/11
4 楼
hsw8208 [专家分:20] 发布于 2009-09-16 11:47:00
一楼的是帮助文件上的例子!
5 楼
琅拿度 [专家分:2820] 发布于 2009-09-18 11:48:00
http://bbs.pfan.cn/post-305956.html
6 楼
alpen [专家分:1140] 发布于 2009-09-19 10:21:00
看了http://bbs.pfan.cn/post-305956.html,太多啦.
这个才是关键:
作者:Ilikefox
做实验验证:命令窗口输入如下命令,全选中回车执行
=RAND(-1)
FOR i=1 TO 5
?RAND()
ENDFOR
主窗口显示产生的5个随机数
接下来不管是继续执行一遍还是退出Fox重启再次执行,你都会得到不同的随机数,呵呵,原因很简单,每次种子都变化了。
7 楼
hsw8208 [专家分:20] 发布于 2009-09-22 15:21:00
http://bbs.pfan.cn/post-305956.html
好帖子,学到不少!!!
8 楼
dfwxj [专家分:270] 发布于 2009-09-26 22:48:00
6楼正解
我来回复