У меня возникла странная проблема в 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
}
Helper Функция
/**
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
}