在Swift中使用srand(time(NULL))会产生编译错误

use*_*204 1 swift

我试图在Swift中使用随机数生成器srand(time(NULL)),但是我得到了这个编译错误:

使用未解析的标识符'NULL'

还有另一种方法我应该使用srand()吗?

Mar*_*n R 9

Swift nil用于NULL指针,并且返回值time()必须强制转换为UInt32:

srand(UInt32(time(nil)))
Run Code Online (Sandbox Code Playgroud)

但请考虑使用arc4random()或其变体.来自http://nshipster.com/random/:

  • arc4random不需要初始种子(使用srandsrandom),使其更容易使用.
  • arc4random具有范围高达0x100000000(4294967296),而randrandom顶出在RAND_MAX = 0x7FFFFFFF的(2147483647).
  • rand 通常以一种定期循环低位的方式实现,使其更具可预测性.

例如,

let x = arc4random_uniform(10)
Run Code Online (Sandbox Code Playgroud)

生成0 ... 9范围内的随机数.