Swift 3中更好的随机数范围

时间:2016-09-19 02:08:46

标签: random sprite-kit swift3 gameplay-kit

在升级到Swift 3(Xcode 8)之前,我的随机位置开始如下:

func randomStartPosition(range: Range<Int> = 45...(Int(self.frame.size.height)-45)) -> Int {
    let min = range.startIndex
    let max = range.endIndex
    return Int(arc4random_uniform(UInt32(max - min))) + min }

转换后停止工作,因为它已更新为:

func randomSmallObjectsStartPosition(_ range: Range<Int> = 25...(Int(self.frame.size.height)-25)) -> Int {
    let min = range.lowerBound
    let max = range.upperBound
    return Int(arc4random_uniform(UInt32(max - min))) + min }

这是因为我最终了解了GamePlayKit:

开始于:

import GameplayKit

然后你可以使用GamePlayKit轻松制作新的随机变量:

你可以在苹果网站上阅读,但基本上这会给你更多的点击率#34;在中间:

lazy var randomStartPosition = GKGaussianDistribution(randomSource: GKARC4RandomSource(), lowestValue: 0, highestValue:100)

这将循环通过随机值,直到它们全部被消耗,然后再次开始。

lazy var randomShuffle = GKShuffledDistribution(randomSource: GKARC4RandomSource(), lowestValue: 0, highestValue:100)

最后是完全随机的值生成器:

lazy var totallyRandom = GKRandomDistribution(lowestValue: 1, highestValue: 100)

如何使用的示例:

    MyObject.position = CGPoint(x: self.frame.size.width + 20, y: CGFloat(totallyRandom.nextInt()) )

这会将我的物体从最右边的屏幕上移开,并将其放在Y轴上的一个完全随机的位置。

0 个答案:

没有答案