我正在尝试创建一个
Bool
的静态扩展,每次调用时返回一个随机的true/false值。我正在尝试使它工作:static func coinFlip() -> Bool {
#if os(Linux)
srand(UInt32(time(nil)))
let result = Int(random() % 2)
if result == 0 {
return false
} else {
return true
}
#else
return arc4random_uniform(2) == 0
#endif
}
我正在一个服务器端Swift应用程序的路由范围内使用这个东西。每当它第一次被调用时,它会返回一个随机值,但是在相同作用域内对该函数进行的所有后续调用都不会随机化输出。例如:
for _ in 1...5 {
let coin = Bool.coinFlip()
if coin == true {
print("coin flip true")
} else {
print("coin flip false")
}
}
…会产生如下输出:
coin flip false
coin flip false
coin flip false
coin flip false
coin flip false
......但是,如果我单独调用该路由,我可能会得到:
coin flip true
coin flip true
coin flip true
coin flip true
coin flip true
srand(UInt32(time(nil)))
只会随机化random()
的伪随机序列,这是否存在问题?我不确定该怎么做。提前感谢您的帮助!