返回介绍

Function Random

发布于 2020-03-05 18:21:31 字数 2939 浏览 1189 评论 0 收藏 0

Random

产生一个伪随机的浮点数。

Random ( [最小值 [, 最大值 [, 标志]]] )

参数

最小值[可选参数] 随机数的最小值,默认为0。
最大值[可选参数] 随机数的最大值,默认为1。
标志[可选参数] 设为1则返回整数,默认则返回一个浮点数。

返回值

成功:返回介于 最小值 及 最大值 之间的一个伪随机数。
失败:返回 0,并把 @error 设为以下值的其中一种:
0 成功
1 参数错误

注意

默认情况下此函数的返回值是十进制的浮点数,如果需要得到整数则要把标志参数设为1。

若在调用函数时只有一个实参则该值将被当作 最大值(最小值是默认的0)。

若(通过标志参数)把返回值设为整数时,返回值将在最小值和最大值之间(包括两者在内),如果是(默认情况下的)浮点数则不能得到最大数。


关于源码的说明

此函数使用了 Mersenne Twister 的随机数发生器(MT19937算法,由 Takuji Nishimura、Makoto Matsumoto、Shawn Cokus、Matthe Bellew 及 Isaku Wada 编写)。

Mersenne Twister(马其赛旋转算法) 是一个产生随机数的著名算法。在设计该算法的时候就已经综合考虑了其它各种发生器的缺点。它的周期是 219937-1,而且在623维空间上的分布是均匀的,发生器产生随机数的速度也挺快;它避免了乘法和除法的使用,同时还很好地利用了缓冲和管道。详细说明请查看算法作者的网页: http://www.math.keio.ac.jp/~matumoto/emt.html

版权所有 (C) 1997 - 2002,Makoto Matsumoto 及 Takuji Nishimura,保留所有权力。

如果满足以下条件,则允许以源代码格式或二进制格式,经过修改或不经修改,进行再分发和使用:

1. 再分发源代码时,必须保留上述版权说明、此条件列表和以下免责声明。

2. 以二进制格式再分发必须在文档和/或随分发版本一起提供的其他资料中复制上述版权说明、此条件列表和以下免责声明。

3. 没有专门的事先书面许可,不得用贡献者的姓名来签署或宣传由此软件衍生的产品。

此软件由版权拥有者和贡献者“照原样”提供。对于任何明示或暗示的担保,包括但不限于对商业可行性、针对特定用途的适用性的暗示担保,我们均不负责。对于任何直接、间接、偶然、特别、典型或因果性损坏(包括但不限于替代商品或服务的获得;用法、数据或利润的丢失;或业务中断),无论起因是什么,无论根据任何责任理论,无论是否在合同、严格赔偿责任中,版权所有者及其贡献者均一概不负责。对于由于使用此软件,而以任何形式出现的民事侵权行为(包括疏忽或其他形式),版权所有者及其贡献者均一概不负责。即使被告知了这种损坏的可能性,也是如此。

相关

Int, Round

示例


;模拟丢硬币
If Random() < 0.5 Then ; 返回介于0和1之间的数
$msg = "正面朝上的几率是 50%"
Else
$msg = "反面朝上的几率是 50%"
Endif
MsgBox(0,"结果", $msg )


;掷骰子
msgBox(0, "掷骰子", "您得到的是: " & Random(1, 6, 1) )


;模拟股票市场
$StockPriceChange = Random(-10, 10, 1) ; 产生一个介于 -10 和 10之间的整数
$StockPrice = $StockPrice + $StockPriceChange
If $StockPriceChange < 0 Then
MsgBox(4096, "股票变动", "您所持股票已下跌到 $" & $StockPrice)
ElseIf $StockPriceChange > 0 Then
MsgBox(4096, "股票变动", "您所持股票已升到 $" & $StockPrice)
Else
MsgBox(4096, "股票变动", "您所持股票仍维持在 $" & $StockPrice)
Endif


;随机字符
If Random() < 0.5 Then
;Capitals
$Letter = Chr(Random(Asc("A"), Asc("Z"), 1))
Else
;Lower case
$Letter = Chr(Random(Asc("a"), Asc("z"), 1))
Endif


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文