random 包

介绍

random 包提供用于生成伪随机数的类 Random。

主要接口

class Random

public open class Random {
    public init()
    public init(seed: UInt64)
}

此类主要用于伪随机数的生成。

Random 类的主要函数如下所示:

init

public init()

功能:默认无参构造函数创建新的 Random 对象。

init

public init(seed: UInt64)

功能:创建新的 Random 对象。

参数:

  • seed:UInt64 类型的种子,如果设置相同随机种子,生成的伪随机数列表相同

prop seed

public open mut prop seed: UInt64

功能:设置或者获取种子的大小,如果设置相同随机种子,生成的伪随机数列表相同

func next

public open func next(bits: UInt64): UInt64

功能:生成一个用户指定位长的随机整数。

参数:

  • bits:要生成的伪随机数的位数

返回值:用户指定位长的伪随机数

异常:

  • IllegalArgumentException:如果 bits 等于 0 ,或大于 64,超过所能截取的 UInt64 长度,则抛出异常

func nextBool

public open func nextBool(): Bool

功能:获取一个布尔类型的伪随机值。

返回值:返回一个布尔类型的伪随机数

func nextUInt8

public open func nextUInt8(): UInt8

功能:获取一个 UInt8 类型的伪随机数。

返回值:返回一个 UInt8 类型的伪随机数

func nextUInt16

public open func nextUInt16(): UInt16

功能:获取一个 UInt16 类型的伪随机数。

返回值:返回一个 UInt16 类型的伪随机数

func nextUInt32

public open func nextUInt32(): UInt32

功能:获取一个 UInt32 类型的伪随机数。

返回值:返回一个 UInt32 类型的伪随机数

func nextUInt64

public open func nextUInt64(): UInt64

功能:获取一个 UInt64 类型的伪随机数。

返回值:返回一个 UInt64 类型的伪随机数

func nextInt8

public open func nextInt8(): Int8

功能:获取一个 Int8 类型的伪随机数。

返回值:返回一个 Int8 类型的伪随机数

func nextInt16

public open func nextInt16(): Int16

功能:获取一个 Int16 类型的伪随机数。

返回值:返回一个 Int16 类型的伪随机数

func nextInt32

public open func nextInt32(): Int32

功能:获取一个 Int32 类型的伪随机数。

返回值:返回一个 Int32 类型的伪随机数

func nextInt64

public open func nextInt64(): Int64

功能:获取一个 Int64 类型的伪随机数。

返回值:返回一个 Int64 类型的伪随机数

func nextUInt8

public open func nextUInt8(upper: UInt8): UInt8

功能:获取一个范围在 [0, upper) 的 UInt8 类型的伪随机数。

参数:

  • upper:生成的伪随机数范围上界(不包括 upper)

返回值:返回一个 UInt8 类型的伪随机数

异常:

  • IllegalArgumentException:如果 upper 等于 0,抛出异常

func nextUInt16

public open func nextUInt16(upper: UInt16): UInt16

功能:获取一个范围在 [0, upper) 的 UInt16 类型的伪随机数。

参数:

  • upper:生成的伪随机数范围上界(不包括 upper)

返回值:返回一个 UInt16 类型的伪随机数

异常:

  • IllegalArgumentException:如果 upper 等于 0,抛出异常

func nextUInt32

public open func nextUInt32(upper: UInt32): UInt32

功能:获取一个范围在 [0, upper) 的 UInt32 类型的伪随机数。

参数:

  • upper:生成的伪随机数范围上界(不包括 upper)

返回值:返回一个 UInt32 类型的伪随机数

异常:

  • IllegalArgumentException:如果 upper 等于 0,抛出异常

func nextUInt64

public open func nextUInt64(upper: UInt64): UInt64

功能:获取一个范围在 [0, upper) 的 UInt64 类型的伪随机数。

参数:

  • upper:生成的伪随机数范围上界(不包括 upper)

返回值:返回一个 UInt64 类型的伪随机数

异常:

  • IllegalArgumentException:如果 upper 等于 0,抛出异常

func nextInt8

public open func nextInt8(upper: Int8): Int8

功能:获取一个范围在 [0, upper) 的 Int8 类型的伪随机数。

参数:

  • upper:生成的伪随机数范围上界(不包括 upper)

返回值:返回一个 Int8 类型的伪随机数

异常:

  • IllegalArgumentException:如果 upper 小于等于 0,抛出异常

func nextInt16

public open func nextInt16(upper: Int16): Int16

功能:获取一个范围在 [0, upper) 的 Int16 类型的伪随机数。

参数:

  • upper:表示生成的伪随机数范围上界(不包括 upper)

返回值:返回一个 Int16 类型的伪随机数

异常:

  • IllegalArgumentException:如果 upper 小于等于 0,抛出异常

func nextInt32

public open func nextInt32(upper: Int32): Int32

功能:获取一个范围在 [0, upper) 的 Int32 类型的伪随机数。

参数:

  • upper:表示生成的伪随机数范围上界(不包括 upper)

返回值:返回一个 Int32 类型的伪随机数

异常:

  • IllegalArgumentException:如果 upper 小于等于 0,抛出异常

func nextInt64

public open func nextInt64(upper: Int64): Int64

功能:获取一个范围在 [0, upper) 的 Int64 类型的伪随机数。

参数:

  • upper:生成的伪随机数范围上界(不包括 upper)

返回值:返回一个 Int64 类型的伪随机数

异常:

  • IllegalArgumentException:如果 upper 小于等于 0,抛出异常

func nextUInt8s

public open func nextUInt8s(array: Array<UInt8>): Array<UInt8>

功能:生成随机数替换入参数组中的每个元素。

参数:

  • array:被替换的数组

返回值:返回替换后的 Array

func nextFloat16

public open func nextFloat16(): Float16

功能:获取一个 Float16 类型的伪随机数,其范围为 [0.0, 1.0)。

返回值:Float16 类型的伪随机数

func nextFloat32

public open func nextFloat32(): Float32

功能:获取一个 Float32 类型的伪随机数,其范围为 [0.0, 1.0)。

返回值:Float32 类型的伪随机数

func nextFloat64

public open func nextFloat64(): Float64

功能:获取一个 Float64 类型的伪随机数,其范围为 [0.0, 1.0)。

返回值:Float64 类型的伪随机数

func nextGaussianFloat16

public func nextGaussianFloat16(mean!: Float16 = 0.0, sigma!: Float16 = 1.0): Float16

功能:默认获取一个 Float16 类型且符合均值为 0.0 标准差为 1.0 的高斯分布的随机数。其中均值是期望值,可解释为位置参数,决定了分布的位置,标准差可解释为尺度参数,决定了分布的幅度。此函数调用了函数 nextGaussianFloat16Implement 得到返回值,所以当子类继承 Random 并覆写 nextGaussianFloat64Implement 函数时,调用子类的该函数将会返回覆写的函数的返回值。

参数:

  • mean:均值
  • sigma:标准差

返回值:一个 Float16 类型的随机数

func nextGaussianFloat32

public func nextGaussianFloat32(mean!: Float32 = 0.0, sigma!: Float32 = 1.0): Float32

功能:默认获取一个 Float32 类型且符合均值为 0.0 标准差为 1.0 的高斯分布的随机数。其中均值是期望值,可解释为位置参数,决定了分布的位置,标准差可解释为尺度参数,决定了分布的幅度。此函数调用了函数 nextGaussianFloat32Implement 得到返回值,所以当子类继承 Random 并覆写 nextGaussianFloat64Implement 函数时,调用子类的该函数将会返回覆写的函数的返回值。

参数:

  • mean:均值
  • sigma:标准差

返回值:一个 Float32 类型的随机数

func nextGaussianFloat64

public func nextGaussianFloat64(mean!: Float64 = 0.0, sigma!: Float64 = 1.0): Float64

功能:默认获取一个 Float64 类型且符合均值为 0.0 标准差为 1.0 的高斯分布的随机数。其中均值是期望值,可解释为位置参数,决定了分布的位置,标准差可解释为尺度参数,决定了分布的幅度。此函数调用了函数 nextGaussianFloat64Implement 得到返回值,所以当子类继承 Random 并覆写 nextGaussianFloat64Implement 函数时,调用子类的该函数将会返回覆写的函数的返回值。

参数:

  • mean:均值
  • sigma:标准差

返回值:一个 Float64 类型的随机数

func nextGaussianFloat16Implement

protected open func nextGaussianFloat16Implement(mean: Float16, sigma: Float16): Float16

功能:获取一个 Float16 类型, 且符合均值为 mean 标准差为 sigma 的高斯分布的随机数。其中均值是期望值,可解释为位置参数,决定了分布的位置,标准差可解释为尺度参数,决定了分布的幅度。此函数是 nextGaussianFloat16 的实现函数,非公开,当子类继承 Random 并覆写此函数时,调用子类的 nextGaussianFloat16 函数将会返回此函数的返回值。

参数:

  • mean:均值
  • sigma:标准差

返回值:一个 Float16 类型的随机数

func nextGaussianFloat32Implement

protected open func nextGaussianFloat32Implement(mean: Float32, sigma: Float32): Float32

功能:获取一个 Float32 类型, 且符合均值为 mean 标准差为 sigma 的高斯分布的随机数。其中均值是期望值,可解释为位置参数,决定了分布的位置,标准差可解释为尺度参数,决定了分布的幅度。此函数是 nextGaussianFloat32 的实现函数,非公开,当子类继承 Random 并覆写此函数时,调用子类的 nextGaussianFloat32 函数将会返回此函数的返回值。

参数:

  • mean:均值
  • sigma:标准差

返回值:一个 Float32 类型的随机数

func nextGaussianFloat64Implement

protected open func nextGaussianFloat64Implement(mean: Float64, sigma: Float64): Float64

功能:获取一个 Float64 类型, 且符合均值为 mean 标准差为 sigma 的高斯分布的随机数。其中均值是期望值,可解释为位置参数,决定了分布的位置,标准差可解释为尺度参数,决定了分布的幅度。此函数是 nextGaussianFloat64 的实现函数,非公开,当子类继承 Random 并覆写此函数时,调用子类的 nextGaussianFloat32 函数将会返回此函数的返回值。

参数:

  • mean:均值
  • sigma:标准差

返回值:一个 Float64 类型的随机数

示例

Random 使用

下面是 Random 创建随机数对象的示例。

代码如下:

from std import random.*
main() {
    let m: Random = Random()
    /* 创建 Random 对象并设置种子来获取随机对象 */
    m.seed = 3
    let b: Bool = m.nextBool()
    let c: Int8 = m.nextInt8()
    print("b=${b is Bool},")/* 对象也可以是 Bool 类型 */
    println("c=${c is Int8}")
    return 0
}

运行结果如下:

b=true,c=true