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
}