Swift 3.0에서 난수 생성 [이 경우 CGPoints]에서 이상한 문제가 있습니다. 아주 간단한 입자 필터를 만들기 위해 노력하고 있으며, 처음에는 아래 코드를 사용하여 입자를 무작위로 추출하는 데 문제가 있습니다.Swift 3.0에서 배열의 각 요소에 대해 어떻게 난수 생성을 강요합니까?
'입자'세트를 반복 할 때 고유 한 무작위 포인트가 생성되지만 [우수] 각 입자는 똑같은 고유 한 임의 포인트 [배트]를 얻습니다. 각 입자가 고유 한 무작위 점을 얻도록하기 위해 내가 뭘 잘못하고 있는지 확신하지 못합니다.
누구나 각 입자가 고유 한 무작위 지점을 얻도록 할 수있는 방법이 있습니까?
감사
스탠
문제점 기능. OK
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
}