相关疑难解决方法(0)

如何在Apple的Swift语言中生成一个随机数?

我意识到Swift书提供了随机数生成器的实现.最好的做法是将此实现复制并粘贴到自己的程序中吗?或者是否有一个我们现在可以使用的库?

random swift

423
推荐指数
20
解决办法
30万
查看次数

在包含范围内生成唯一随机数的数组

我正在尝试在Apple Swift(iOS)中编写一个函数,该函数将生成任意给定数量的独特随机数,这些随机数在给定的包含范围内,比如介于0和10之间.因此,如果我说我想要0和0之间的5个唯一随机数10,它将返回一个包含[7,10,2,3,0]或[7,10,2,8,0]等的数组.

我有这个部分与:

// Returns an array of unique numbers
func uniqueRandoms(numberOfRandoms: Int, minNum: Int, maxNum: UInt32) -> [Int] {

    var uniqueNumbers = [Int]()

    while uniqueNumbers.count < numberOfRandoms {

        let randomNumber = Int(arc4random_uniform(maxNum + 1)) + minNum
        var found = false

        for var index = 0; index < uniqueNumbers.count; ++index {
                if uniqueNumbers[index] == randomNumber {
                    found = true
                    break
                }
        }

        if found == false {
            uniqueNumbers.append(randomNumber)
        }

    }

    return uniqueNumbers
}

print(uniqueRandoms(5, minNum: 0, maxNum: 10))
Run Code Online (Sandbox Code Playgroud)

现在我想添加将我不想要的范围内的单个数字列入黑名单的功能.说我仍然想要0到10之间的5个唯一随机数但是我不希望它包括8.

那部分导致无限循环(25%以上的时间或更多),我无法弄清楚为什么?这就是我所拥有的: …

arrays random swift swift2

5
推荐指数
3
解决办法
5301
查看次数

调用方法的错误做法?

我对良好或不良做法有疑问。

我创建了一个函数,该函数将生成一个随机数。如果随机数等于先前的随机数,则应生成一个新数。所以我的问题是。从方法中调用相同的方法是不好的做法吗?

func getRandomNumber(){ //<-- Method name
    let randomNumber = Int.random(in: 0..<allPlayers.count)

    if lastRoundNumber == randomNumber{
        getRandomNumber() //<-- Like this
    }
    print(randomNumber)
}
Run Code Online (Sandbox Code Playgroud)

还是我应该这样做?如果是,怎么办?

因此,像我在上面的代码中所做的那样,从当前方法中调用相同的方法是不好的做法吗?提前致谢。

如果是,为什么不好?以及如何获得更好的代码?

swift

2
推荐指数
1
解决办法
91
查看次数

标签 统计

swift ×3

random ×2

arrays ×1

swift2 ×1