swift2 在Swift中创建随机布尔

oalqel3c  于 2022-11-06  发布在  Swift
关注(0)|答案(3)|浏览(214)

我需要在我的游戏中创建一个随机的布尔值,在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次调用中生成了多少个10

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
dced5bon

dced5bon1#

Xcode 10与Swift 4.2配合使用

看起来Apple的工程师们在听

let randomBool = Bool.random()
4uqofj5v

4uqofj5v2#

import Foundation

func randomBool() -> Bool {
    return arc4random_uniform(2) == 0
}

for i in 0...10 {
    print(randomBool())
}

对于更先进的发电机,理论可用here
了解伯努利(或二项式)分布的基本知识,请检查here

ibrsph3r

ibrsph3r3#

extension Bool {
    static func random() -> Bool {
        return arc4random_uniform(2) == 0
    }
}

// usage:
Bool.random()

相关问题