基 础 函 数 参 考


Random

产生浮点型伪随机数.

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

参 数

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

返 回 值

成功: 返回最小值与最大值之间的伪随机数.
失败: 返回 0, 设置 @error 为非 0 值.

备 注

默认随机函数工作于十进制/浮点数. 如果需要整数, 则将标志参数设为 1.

如果只提供一个参数, 则它解释为最大值.

其结果在取整数时, 返回值在最小值及最大值之间, 包含最小, 最大值(取浮点数时可以缺少"最大值"参数).

如果最小和最大值是相同的, 则随机将返回 0, 并设置 @error 为非零值.

当使用整数时, 最大-最小必须小于 2^31.


关于源型的说明

函数使用 Mersenne Twister 的 MT19937 随机数发生器,
由 Takuji Nishimura, Makoto Matsumoto, Shawn Cokus, Matthe Bellew 与 Isaku Wada 编写.

Mersenne Twister 算法用于生成随机数. 设计考虑了其它各种发生器的缺点.
周期为 219937-1, 而且在 623 维空间上的分布是均匀的.
产生随机数的速度也挺快; 它避免了乘法和除法的使用, 同时还很好地利用了缓冲和管道.
详细说明请查看算法作者的网页 http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html

版权 (C) 1997 - 2002, Makoto Matsumoto 与 Takuji Nishimura 保留所有版权.

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

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

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

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

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

相 关 函 数

Round, SRandom

函 数 示 例


;硬币翻转
Local $Msg
If Random() < 0.5 Then ; 返回 0 到 1 之间的数值.
    $Msg = "正面朝上. 赢了 50%"
Else
    $Msg = "背面朝上. 输了 50%"
EndIf
MsgBox(0, "投掷硬币", $Msg)


;模型滚动
MsgBox(0, "模型滚动", "你投掷: " & Random(1, 6, 1))

Local $StockPrice = 98
;摹拟股票市场博弈
Local $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


;随机字符
Local $Letter
If Random() < 0.5 Then
    ;大写
    $Letter = Chr(Random(Asc("A"), Asc("Z"), 1))
Else
    ;小写
    $Letter = Chr(Random(Asc("a"), Asc("z"), 1))
EndIf

provider with jb51.net (unicode)