0
我在Swift 3.0中产生一个奇怪的问题,生成随机数字[在这种情况下CGPoints]。我正在尝试构建一个非常简单的粒子滤波器,并且我最初使用下面的代码随机化所有粒子。你如何在Swift 3.0中为数组中的每个元素强制生成随机数?
当我遍历我的'粒子'集时,会生成一个唯一的随机点[GOOD],但每个粒子都会得到完全相同的唯一随机点[BAD]。我不确定我在做什么错误,以确保每个粒子得到一个独特的随机点
任何人有任何建议,我可以强制每个粒子获得一个独特的随机点?
由于
斯坦
问题的作用。
func randomize(
theListOfParticles: [RegionParticle]
) -> [RegionParticle] {
var returnListOfParticles = [SRLSystemRegionParticle]()
for particle in theListOfParticles {
particle.position = self.randomPointInRegion()
returnListOfParticles.append(particle)
}
return returnListOfParticles
}
辅助函数
/**
Get a random point in the region.
- Returns: CGPoint
*/
func randomPointInRegion() -> CGPoint {
let x : CGFloat = Math.randomCGFloat(
min: -(self.rect?.size.width)!,
max: (self.rect?.size.width)!
)
let y : CGFloat = Math.randomCGFloat(
min: -(self.rect?.size.width)!,
max: (self.rect?.size.width)!
)
let returnCGPoint : CGPoint = CGPoint(
x: x,
y: y
)
return returnCGPoint
}
随机根函数[在一个单独的类的我所有的数学函数。]
/**
Generate a random CGFloat.
- Parameters:
- min: CGFloat
- max: CGFloat
- Returns: a CGFloat
*/
static func randomCGFloat(min: CGFloat, max: CGFloat) -> CGFloat {
return CGFloat(Float(arc4random())/Float(UINT32_MAX)) * (max - min) + min
}