主题:请教生成随机数问题
xsnyjd
[专家分:0] 发布于 2010-03-01 17:52:00
虽能生成随机数,但为何生成的随机数的大小次序不会改变(本例中生成的6个随机数,按从小到大的次序排列时编号排列总是5、2、6、4、1、3),没有达到真正的“随机”,现请教一个能真正随机的代码,谢谢!
回复列表 (共7个回复)
沙发
fyren [专家分:230] 发布于 2010-03-01 20:53:00
好像是用-1做种子
板凳
liupeisong [专家分:2340] 发布于 2010-03-01 21:02:00
返回一个 0 到 1 之间的随机数。
RAND([nSeedValue])
参数
nSeedValue
指定种子数值,它决定 RAND( ) 函数返回的数值序列。在第一次发出 RAND( ) 函数时用相同的种子数 nSeedValue,然后再使用不带 nSeedValue 参数的 RAND( ) 函数,将得到一个相同的随机数序列。如果第一次发出 RAND( ) 时使用的 nSeedValue 参数是负数,那么将使用来自系统时钟的种子值。若要获得随机程度最大的数字序列,可以最初用一个负的参数发出 RAND( ) 函数,然后再不带参数发出 RAND( ) 函数。 如果省略了 nSeedValue 参数,RAND( ) 函数使用默认的种子数值 100,001
以上是VFP9的帮助,由此可见,楼主是没有使用种子导致每次都获得同样的结果了。
3 楼
xsnyjd [专家分:0] 发布于 2010-03-01 21:10:00
请以上两位老师修改一下附件中的PRG文件后再运行试试看,还是不成功的,请再次指点,谢谢
4 楼
qjbzjp [专家分:8830] 发布于 2010-03-01 23:23:00
=RAND(-1)
FOR i=1 TO 5
?RAND()
ENDFOR
参见:
http://bbs.pfan.cn/post-305956.html
5 楼
liupeisong [专家分:2340] 发布于 2010-03-02 00:29:00
只要在FOR循环前加一句ai=RAND(-1)就是了(其实和4楼一个意思)
USE cjsb excl
afields(tf)
xnum = alen(tf,1)
xfname = "Random"+allt(str(xnum))
alte table cjsb add column &xfname i
select cjsb
zjl=recc()
ai=RAND(-1)
FOR i=1 TO zjl
GO i
ai=INT(RAND()*1000)
REPLACE &xfname WITH ai
ENDFOR
go top
BROWSE
6 楼
琅拿度 [专家分:2820] 发布于 2010-03-02 12:06:00
请参考我的帖子吧:
http://bbs.pfan.cn/post-305956.html
7 楼
860700400 [专家分:0] 发布于 2010-03-16 22:05:00
[b] 大家 这个是我自己学习C语言的网站! 真的是不错!http://bbs.21shipin.com/?fromuid=619
【网站开发系统视频教程】【全套】
【C语言的基础视频学习】【全套】
http://bbs.21shipin.com/?fromuid=619
21视频教程网从新打开! 比21互联的视频教程还好! eNet网络学院-中国权威电脑教程软件资讯网站也是从这里转过去的! 确实不错!
如果可以的话! 大家就来顶起来!谢谢![/b]谢谢
我来回复