【发布时间】:2023-03-28 23:54:01
【问题描述】:
我正在尝试对Bool 进行静态扩展,以便在调用时返回一个随机的真/假值。我正在努力完成这项工作:
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() 的伪随机序列是否有问题?我不知道该怎么办。提前感谢您的帮助!
【问题讨论】:
标签: linux swift server-side-swift