Swift 3.0で乱数を生成する際に奇妙な問題が発生しています[この場合はCGPoints]。非常に単純なパーティクルフィルタを作成しようとしていますが、最初に以下のコードを使用してパーティクルをランダムにランダム化することに問題があります。Swift 3.0の配列内の各要素の乱数生成をどのように強制しますか?
私が「パーティクル」のセットを反復すると、一意のランダムなポイントが生成されますが、各パーティクルはまったく同じ一意のランダムポイント[BAD]を取得します。各パーティクルがユニークなランダムポイントを得るために間違っていることを私は確信していません
どのように私は各パーティクルにユニークなランダムポイントを取得させることができますか?
おかげ
スタン
問題の機能。 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
}