社区
VFP
帖子详情
FoxPro2.5b for windows中的一个函数问题!
oycnight
2004-09-20 08:24:50
格式:RAND([<数指表达式>])
功能:获得一个0~1之间的随机数,其中数值表达式的值为随机数的种子数,可缺省.如果缺省,则两次系列调用会得到相同的随机数序列.如果数值表达式取一个负数,系统将从当前时钟获得一个种子数,此后的调用能确保获得真正随机数序列.
还有一本书上说如果缺省后面的数指表达式,则自动以100001为种子数.
在这里我想请问种子数是什么意思?有谁能详细解释该函数?谢谢!
...全文
138
4
打赏
收藏
FoxPro2.5b for windows中的一个函数问题!
格式:RAND([]) 功能:获得一个0~1之间的随机数,其中数值表达式的值为随机数的种子数,可缺省.如果缺省,则两次系列调用会得到相同的随机数序列.如果数值表达式取一个负数,系统将从当前时钟获得一个种子数,此后的调用能确保获得真正随机数序列. 还有一本书上说如果缺省后面的数指表达式,则自动以100001为种子数. 在这里我想请问种子数是什么意思?有谁能详细解释该函数?谢谢!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
4 条
回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
打赏红包
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)
相关推荐
Javascript-Mozilla和IE
中
的
一个
函数
直接量的
问题
分析
Javascript-Mozilla和IE
中
的
一个
函数
直接量的
问题
分析
哪位高人会
FOXPRO
2.5
B(求购高人,价钱好商量)
拜托各位了.我月底就要交作业的.明文规定一定要用
FOXPRO
2.5
B FOR
WINDOWS
所以小弟现在也没办法了.哪位能帮下忙的.帮我编个很小的系统,一天肯定能搞定的.只有两个数据库
VFP&Dll注册外部
Windows
32 位动态链接库 ( .DLL )
中
的
一个
函数
。
注册外部
Windows
32 位动态链接库 ( .DLL )
中
的
一个
函数
。DECLARE [cFunctionType] FunctionName IN LibraryName [AS AliasName] [cParamType1 [@] ParamName1, cParamType2 [@] ParamName2, ...]参数cFunctionType 表明 32 位 Window
2021-03-07
JS
中
this的指向
问题
在全局环境下this就是
windows
对象的引用,比如说我们在全局环境下定义
一个
函数
,看如下代码 function better() { console.log(this); } better() 调用
函数
打印出来的就是window对象, 构造
函数
主要用来生成对象,里面的this默认就是指当前对象,当
一个
函数
为
一个
对象的属性时,此时
函数
中
的this指向也是指向这个对象 function Dage(params) { this.na
windows
线程池
线程池,由系统自动为我们创建的一些线程,这些线程都是worker线程,并且让线程池
中
的
一个
线程来调用我们的回调
函数
。当然线程的数量是由系统来维护的,对用户是透明的。
windows
线程池
函数
允许我们做一下事情: ①以异步的方式调用
一个
函数
②每隔一段时间调用
一个
函数
③当内核对象触发的时候调用
一个
函数
④当异步I/O请求完成的时候调用
一个
函数
下面分别简单介绍一下:
发帖
VFP
VFP
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
复制链接
扫一扫
2574
社区成员
2.9w+
社区内容
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
加入社区
获取链接或二维码
帖子事件
创建了帖子
2004-09-20 08:24
社区公告
暂无公告