私のゲームでは、Swiftでランダムなブール値を作成する必要があります。
基本的には、はい(または1)の場合は1つのオブジェクトを生成し、いいえ(または0)の場合はもう1つのオブジェクトを生成します。
これまでのところ、 この質問 と同様の質問をここで見て、私はこれを見つけました:
let randomSequenceNumber = Int(arc4random_uniform(2))
今はそれは機能しますが、私には0へのバイアスのようです...途方もなくバイアスのように...
これは私が値を使用する方法です:
if(randomSequenceNumber == 0)
//spawn object A
else
//spawn object B
ランダムなブール値を使用してこれを実装するより良い方法はありますか?それは特定の値に偏っていませんか?
更新
実験のビット1
対0
は10,000回の呼び出しで生成されました:
func experiment() {
var numbers: [Int] = []
var tester: Int = 0
var sum = 0
for i in 0...10000 {
tester = Int(arc4random_uniform(2))
numbers.append(tester)
print(i)
}
for number in numbers {
sum += number
}
print("Total 1's: ", sum)
}
Test 1: Console Output: Total 1's: 4936
Test 2: Console Output: Total 1's: 4994
Test 3: Console Output: Total 1's: 4995
Appleエンジニアが聞いているようです
let randomBool = Bool.random()
extension Bool {
static func random() -> Bool {
return arc4random_uniform(2) == 0
}
}
// usage:
Bool.random()