社区
VFP
帖子详情
FoxPro2.5b for windows中的一个函数问题!
oycnight
2004-09-20 08:24:50
格式:RAND([<数指表达式>])
功能:获得一个0~1之间的随机数,其中数值表达式的值为随机数的种子数,可缺省.如果缺省,则两次系列调用会得到相同的随机数序列.如果数值表达式取一个负数,系统将从当前时钟获得一个种子数,此后的调用能确保获得真正随机数序列.
还有一本书上说如果缺省后面的数指表达式,则自动以100001为种子数.
在这里我想请问种子数是什么意思?有谁能详细解释该函数?谢谢!
...全文
150
4
打赏
收藏
FoxPro2.5b for windows中的一个函数问题!
格式:RAND([]) 功能:获得一个0~1之间的随机数,其中数值表达式的值为随机数的种子数,可缺省.如果缺省,则两次系列调用会得到相同的随机数序列.如果数值表达式取一个负数,系统将从当前时钟获得一个种子数,此后的调用能确保获得真正随机数序列. 还有一本书上说如果缺省后面的数指表达式,则自动以100001为种子数. 在这里我想请问种子数是什么意思?有谁能详细解释该函数?谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dfwxj
2004-11-19
打赏
举报
回复
随机数很简单,先发出一个“=rand(-1)”,然后出来的肯定是很随机的,如果嫌随机度不够可以增加小数位数解决,round(rand(),5)
mh_xxw
2004-11-19
打赏
举报
回复
已经很详细了
十豆三
2004-09-21
打赏
举报
回复
返回一个0到1之间的随机数。
语法
RAND([种子值])
返值类型
数值型
参数描述
种子值:用于设定随机数出现的序列(一定没看明白),也就是说您第一次调用此函数代入一个种子值,那么其后对不代值的调用此函数,其返回值是按照一定序列出现,比如您运行如下命令:
? rand(1)
返回值将会是:0.03
其后您再调用:
? rand()
返回值一定是:0.25
之后一定是按照:0.71, 0.48, 0.02, ...这样的序列出现。
疑问
那这是不是说该函数返回的并不是真正的随机数呢?不能这样说,当您第一次使用某个种子值时,谁也不知道它会以怎样的序列出现,虽然说这个序列是已经固定了的,而且下一个数与上一个数之间没有任何规律可寻。
所以您现在再去运行我们以前编过的那个幸运7游戏,您会发现只要是启动软件后第一次出现的数一定是8、5、9,第二次一定是8、2、7,也就是说第二次您一定赢,因为系统隐含是以100001作为种子值。
那么怎样才能避免这种情况呢,以一个负数作为种子值,多少都没有关系,系统将会自动以系统当前的时间为种子值,由于这个值是精确到秒数,所以谁也无法预料会出现什么值,比如您在幸运7程序中将 rand() 全部改成 rand(-1),那就不能保证第二次一定赢了,其实您不需要每个都改为 rand(-1),只需要在进入系统时,比如菜单的设置代码或表单的 init 事件中加上如下代码:
rand(-1)
其它程序中仍用 rand(),出来的数一样是难以预料的,这就是种子的意义,只要播下的第一个种子不知道是怎样的,那就谁也不知道会结出什么样的果来。
十豆三
2004-09-21
打赏
举报
回复
种子:可以理解为数值参数,但这个参数是参与计算的。所以又称为种子。
返回一个 0 到 1 之间的随机数。
RAND([nSeedValue])
返回值
数值型
参数
nSeedValue
指定种子数值,它决定 rand( ) 函数返回的数值序列。
在第一次发出 rand( ) 函数时用种子数 nSeedValue,然后再使用不带 nSeedValue 参数的 rand( ) 函数,将得到一个随机数序列。如果第三次发出 rand( ) 函数时使用同样的种子数值 nSeedValue,那么 RAND( )返回同样的随机数序列。
如果第一次发出 RAND( ) 时使用的 nSeedValue 参数是负数,那么将使用来自系统时钟的种子值。若要获得随机程度最大的数字序列,可以最初用一个负的参数发出 rand( ) 函数,然后再不带参数发出 rand( ) 函数。
如果省略了 nSeedValue 参数,rand( ) 函数使用默认的种子数值 100001。
示例
第一个示例使用 rand( ) 函数创建了包含 10 条随机记录的表,然后使用 min( ) 和 max( ) 函数来显示表中的最大值和最小值。
第二个示例显示 1 到 10 之间的一个随机数。
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
? '最小值是: ', gnMinimum && 显示最小值
? '最大值是: ', gnMaximum && 显示最大值
CLEAR
gnLower = 1
gnUpper = 10
? INT((gnUpper - gnLower + 1) * RAND() + gnLower)
FOXPRO
W
2.5
b for
windows
《
FOXPRO
W
2.5
b for
Windows
:经典数据库开发工具的深度剖析》
FOXPRO
W
2.5
b是一款在
Windows
操作系统环境下运行的数据库开发工具,它在20世纪90年代初期因其强大的功能和易用性而备受赞誉。这款软件是Microsoft ...
2021-2022计算机二级等级考试试题及答案No.16234.docx
7. 数据库操作:向数据库添加表时,不能将
一个
已经属于某个数据库的表直接添加到另
一个
数据库
中
,需要先将其转化为独立的表(自由表)。 8. 数据库模式:内模式是数据库的物理存储结构和存取方法,是数据在数据库...
极简C语言入门课程
一、C语言自我介绍 1、C语言自二十世纪70年代诞生以来,发展到今天2022年,这门开发语言还是强盛不衰,在如今物联网... 6、通过学习C语言,让人有
一个
整体概念,为日后学习其它高级语言打下基础。
2021-2022计算机二级等级考试试题及答案No.19748.docx
9. **Visual
Foxpro
**:这是
一个
32位的数据库开发系统,用于创建和管理数据库应用。 10. **类对象声明**:在面向对象编程
中
,正确声明类对象的方式如`static x x1`,其
中
`x`是类名,`x1`是对象名。 11. **图像框...
Microdraw图形控件开发版本-试用版
MicroDraw SDK For
Windows
,支持
windows
9x/ME/XP/7/8 发行方式:单机版、开发版本、网络版、B/S版本; MicroDraw图形控件是国内专业图形组件(
中
间件),兼容多种CAD/GIS文件格式和操作方式; MDF,DWG,DXF,DWF,DXB,DGN,...
VFP
2,735
社区成员
29,125
社区内容
发帖
与我相关
我的任务
VFP
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
复制链接
扫一扫
分享
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章