在Swift中创建随机Bool

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

Xcode 10与Swift 4.2

看起来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)