什么是Java的Random类(隔离的PRNG)的Swift等价物

时间:2015-04-10 21:22:58

标签: java swift random

关于Swift中随机数生成的大多数讨论都讨论了arc4random()和其他产生随机数全局序列的标准C函数。在某些情况下,有一个隔离的伪随机数发生器是有用的,它可以提供单独的,可重现的数字流。例如在游戏中,您可能希望对游戏的两个方面具有可再现的随机序列,并且调用这两个方面的顺序不应该改变相应的流。

2 个答案:

答案 0 :(得分:2)

OP提供的答案

rand_r()函数通过操作自己的种子值来维持状态来实现这一点。下面是一个简单的例子,说明如何使用它来模仿Java Random类。

/** Java style PRNG */
public class Random
{
    var seed : UInt32 = 0

    init( _ seed : UInt32 ) {
        self.seed = seed
    }

    /** float 0-1.0 */
    public func nextFloat() -> Float {
        return Float(rand_r(&seed)) / Float(INT32_MAX);
    }

}

答案 1 :(得分:0)

rand_r()函数通过操作自己的种子值来维持状态来实现这一点。下面是一个简单的例子,说明如何使用它来模仿Java Random类。

/** Java style PRNG */
public class Random
{
    var seed : UInt32 = 0

    init( _ seed : UInt32 ) {
        self.seed = seed
    }

    /** float 0-1.0 */
    public func nextFloat() -> Float {
        return Float(rand_r(&seed)) / Float(INT32_MAX);
    }

}
相关问题