回 帖 发 新 帖 刷新版面

主题:请教生成随机数问题

虽能生成随机数,但为何生成的随机数的大小次序不会改变(本例中生成的6个随机数,按从小到大的次序排列时编号排列总是5、2、6、4、1、3),没有达到真正的“随机”,现请教一个能真正随机的代码,谢谢!

回复列表 (共7个回复)

沙发

好像是用-1做种子

板凳

返回一个 0 到 1 之间的随机数。

 
RAND([nSeedValue])
 

参数
nSeedValue 
指定种子数值,它决定 RAND( ) 函数返回的数值序列。在第一次发出 RAND( ) 函数时用相同的种子数 nSeedValue,然后再使用不带 nSeedValue 参数的 RAND( ) 函数,将得到一个相同的随机数序列。如果第一次发出 RAND( ) 时使用的 nSeedValue 参数是负数,那么将使用来自系统时钟的种子值。若要获得随机程度最大的数字序列,可以最初用一个负的参数发出 RAND( ) 函数,然后再不带参数发出 RAND( ) 函数。 如果省略了 nSeedValue 参数,RAND( ) 函数使用默认的种子数值 100,001


以上是VFP9的帮助,由此可见,楼主是没有使用种子导致每次都获得同样的结果了。

3 楼

请以上两位老师修改一下附件中的PRG文件后再运行试试看,还是不成功的,请再次指点,谢谢

4 楼

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

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

5 楼

只要在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 楼

请参考我的帖子吧:

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

7 楼

[b]    大家               这个是我自己学习C语言的网站! 真的是不错!http://bbs.21shipin.com/?fromuid=619       
                     【网站开发系统视频教程】【全套】
                     【C语言的基础视频学习】【全套】
                  http://bbs.21shipin.com/?fromuid=619
  21视频教程网从新打开! 比21互联的视频教程还好! eNet网络学院-中国权威电脑教程软件资讯网站也是从这里转过去的! 确实不错! 
如果可以的话! 大家就来顶起来!谢谢![/b]谢谢

我来回复

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