我需要在我的游戏中创建一个随机的布尔值,在Swift中。
基本上,如果是(或1),则生成一个对象,如果否(或0),则生成另一个对象。
到目前为止,查看this question和这里的一个类似的,我发现:
let randomSequenceNumber = Int(arc4random_uniform(2))
现在它工作了,但对我来说它似乎偏向于0 ......就像可笑的偏向......
这就是我如何使用这个值:
if(randomSequenceNumber == 0)
//spawn object A
else
//spawn object B
有没有更好的方法来实现这一点,使用一个随机的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
3条答案
按热度按时间dced5bon1#
Xcode 10与Swift 4.2配合使用
看起来Apple的工程师们在听
4uqofj5v2#
对于更先进的发电机,理论可用here
了解伯努利(或二项式)分布的基本知识,请检查here
ibrsph3r3#