我需要在我的游戏中创建一个随机的bool值,在Swift中.
基本上,如果是(或1),则生成一个对象,如果否(或0),则生成另一个对象.
到目前为止,在这里查看这个问题和类似的问题,我发现了这个:
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
user3441734.. 49
import Foundation func randomBool() -> Bool { return arc4random_uniform(2) == 0 } for i in 0...10 { print(randomBool()) }
对于更先进的发电机,理论可在此处获得
在此处了解伯努利(或二项式)分布的基本知识
import Foundation func randomBool() -> Bool { return arc4random_uniform(2) == 0 } for i in 0...10 { print(randomBool()) }
对于更先进的发电机,理论可在此处获得
在此处了解伯努利(或二项式)分布的基本知识
看起来Apple工程师正在倾听
let randomBool = Bool.random()
extension Bool { static func random() -> Bool { return arc4random_uniform(2) == 0 } } // usage: Bool.random()