3
私はBool
という静的な拡張を作成して、呼び出されるたびにランダムな真偽値を返そうとしています。私はこの仕事をしようとしています:Swift Linuxランダムな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
}
私はこれをサーバーサイドスウィフトアプリケーションで呼び出されているルートの範囲内で使用しています。最初に呼び出されるたびに、ランダムな値が返されますが、その後同じスコープ内の関数へのすべての呼び出しによって出力がランダム化されることはありません。たとえば:
coin flip false
coin flip false
coin flip false
coin flip false
coin flip false
...しかし、私は別に改めてルートを呼び出した場合、その後、私が得ることができる::
for _ in 1...5 {
let coin = Bool.coinFlip()
if coin == true {
print("coin flip true")
} else {
print("coin flip false")
}
}
...これの出力を生成する
coin flip true
coin flip true
coin flip true
coin flip true
coin flip true
をsrand(UInt32(time(nil)))
が擬似ランダムシーケンスrandom()
のランダム化にのみ問題がありますか?私は何をすべきか分からない。あなたの助けを前もってありがとう!