回 帖 发 新 帖 刷新版面

主题:请教 rand( ) 函数的用法!

RAND([nSeedValue])
参数
nSeedValue 
指定种子数值,它决定 rand( ) 函数返回的数值序列。 
在第一次发出 rand( ) 函数时用种子数 nSeedValue,然后再使用不带 nSeedValue 参数的 rand( ) 函数,将得到一个随机数序列。如果第三次发出 rand( ) 函数时使用同样的种子数值 nSeedValue,那么 RAND( )返回同样的随机数序列。 

如果第一次发出 RAND( ) 时使用的 nSeedValue 参数是负数,那么将使用来自系统时钟的种子值。若要获得随机程度最大的数字序列,可以最初用一个负的参数发出 rand( ) 函数,然后再不带参数发出 rand( ) 函数。 

如果省略了 nSeedValue 参数,rand( ) 函数使用默认的种子数值 100001。 

参考手册是上这么解释的,不是很理解?种子数怎么理解?我看了几个应用例子,用这个函数的时候常和一具体数作运算如,100 * RAND(),或 RAND()*10000 请各位老师给讲一下!

回复列表 (共8个回复)

沙发

不算老师,探讨'用这个函数的时候常和一具体数作运算如,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 && 显示最大值



板凳

呵。我也用过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 楼

一楼   你的结果每一次结果都是一样的/11

4 楼

一楼的是帮助文件上的例子!

5 楼

http://bbs.pfan.cn/post-305956.html

6 楼

看了http://bbs.pfan.cn/post-305956.html,太多啦.
这个才是关键:
作者:Ilikefox
做实验验证:命令窗口输入如下命令,全选中回车执行

=RAND(-1)
FOR i=1 TO 5
?RAND()
ENDFOR 

主窗口显示产生的5个随机数

接下来不管是继续执行一遍还是退出Fox重启再次执行,你都会得到不同的随机数,呵呵,原因很简单,每次种子都变化了。

7 楼

http://bbs.pfan.cn/post-305956.html  

好帖子,学到不少!!!

8 楼

6楼正解

我来回复

您尚未登录,请登录后再回复。点此登录或注册