Rea*_*ion 27 random boolean swift swift2
我需要在我的游戏中创建一个随机的bool值,在Swift中.
基本上,如果是(或1),则生成一个对象,如果否(或0),则生成另一个对象.
let randomSequenceNumber = Int(arc4random_uniform(2))
Run Code Online (Sandbox Code Playgroud)
现在它有效,但似乎偏向于0对我来说......就像荒谬的偏见......
这就是我如何使用该值:
if(randomSequenceNumber == 0)
//spawn object A
else
//spawn object B
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来使用随机bool值来实现它?那不是偏向某个值吗?
更新
在10,000次通话中产生了一个实验来看看有多少1人的比赛0:
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
Run Code Online (Sandbox Code Playgroud)
use*_*734 49
import Foundation
func randomBool() -> Bool {
return arc4random_uniform(2) == 0
}
for i in 0...10 {
print(randomBool())
}
Run Code Online (Sandbox Code Playgroud)
对于更先进的发电机,理论可在此处获得
在此处了解伯努利(或二项式)分布的基本知识
War*_*shi 29
看起来Apple工程师正在倾听
let randomBool = Bool.random()
Run Code Online (Sandbox Code Playgroud)
Ada*_*ite 16
extension Bool {
static func random() -> Bool {
return arc4random_uniform(2) == 0
}
}
// usage:
Bool.random()
Run Code Online (Sandbox Code Playgroud)