函数参考


Random

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

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

参数

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

返回值

成功: 返回介于 最小值 及 最大值 之间的一个伪随机数.
失败: 返回 0,并把 @error 设为1(参数错误)

注意/说明

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

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

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

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


关于源码的说明

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

Mersenne Twister(马其赛旋转算法) 是一个产生随机数的著名算法.在设计该算法的时候就已经综合考虑了其它各种发生器的缺点.它的周期是 2 19937-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

示例/演示


Example1() ; Flip a coin.
Example2() ; Roll a die.
Example3() ; Create a random string of text.
Example4() ; Result of when Min and Max are the same value.

Func Example1()
    If Random(0, 1, 1) Then ; Return an integer between 0 and 1.
        MsgBox(4096, "", "The side of the coin was: Heads") ; If the random integer was 1 then heads was thrown.
    Else
        MsgBox(4096, "", "The side of the coin was: Tails") ; If the random integer was 0 then tails was thrown.
    EndIf
EndFunc   ;==>Example1

Func Example2()
    MsgBox(4096, "", "The die landed on number " & Random(1, 6, 1) & ".") ; Return an integer between 1 and 6.
EndFunc   ;==>Example2

Func Example3()
    Local $sText = ""
    For $i = 1 To Random(5, 20, 1) ; Return an integer between 5 and 20 to determine the length of the string.
        $sText &= Chr(Random(65, 122, 1)) ; Return an integer between 65 and 122 which represent the ASCII characters between a (lower-case) to Z (upper-case).
    Next
    MsgBox(4096, "", "The random string of text was: " & $sText) ; Display the string of text.
EndFunc   ;==>Example3

Func Example4()
    Local $iRandom = Random(10, 10)
    If @error Then
        MsgBox(4096, "", "An error occurred, due to the fact both values are exactly the same: " & $iRandom)
    EndIf
EndFunc   ;==>Example4