swift - 난수가 선택 될 확률이 빠른가요?

기사 출처 swift

특정 아이템을 업그레이드 할 수있는 게임을 만들려고합니다. 새 항목의 품질은 다음과 같이 무작위로 결정됩니다.

10% worse - 35% better then current item level = 55% chance
36% better to 90% better then current item level = 35% chance
91% better to 200% better then current item level = 5% chance
201% better to 500% better then current item level = 2.5% chance
500% better to 2000% better then current item level = 2.5% chance


생성 된 임의의 숫자가 예를 들어 55 %의 확률로 35 % 만 더 나아지도록하려면 어떻게해야합니까? 나는 균열이 있었고 이것을 생각해 냈습니다 (% 숫자는 무시하고 테스트를 위해 이것을 사용했습니다).

let randomNumber = Int(arc4random_uniform(1000))


if randomNumber <= 700 {
    println("hey")
    var newLevel = (Double(Double(randomNumber) / 700.00) + 0.1) * Double(pickDamage)

} else if randomNumber <= 800 && randomNumber > 700 {
    var newLevel = (Double(Double(randomNumber) / 700.00) + 1.00) * Double(pickDamage)
} else if randomNumber <= 1000 && randomNumber > 950 {
    var newLevel = (Double(Double(randomNumber) / 700.00) + 2.00) * Double(pickDamage)
}


그러나 이것은 내가 원하는 방식으로하는 것이 아닙니다.
패턴 일치와 결합 된 Swift switch 문을 사용하지 않는 이유 :

// create a random percent, with a precision of one decimal place
func randomPercent() -> Double {
  return Double(arc4random() % 1000) / 10.0;
}

let randomNumber = randomPercent()
switch(randomNumber) {
case 0..<55:
  println("10% worse - 35% better then current item level")
case 55..<90:
  println("36% better to 90% better then current item level")
case 90..<95:
  println("91% better to 200% better then current item level")
case 95..<97.5:
  println("201% better to 500% better then current item level")
default:
  println("500% better to 2000% better then current item level")
}


이것은 논리를 매우 명확하게 만듭니다.

이 질문에 대해 Stack Overflow에서 비슷한 토론을 찾았습니다: https://stackoverflow.com/questions/26092977/

관련 기사
ios - Core Data Swift로 TableView 및 행 섹션화
colors - 풀을 변경하여 신속하게 텍스트 색상을 새로 고칩니다.
objective-c - 이동 후 Xcode 6 베타 빌드 실패 -Bridging-Header Objective-C Swift Xcode6
ios - 신속하게 작업 결과에 따라보기 전환
ios - 신속한 iOS에서 텍스트 필드 UI 업데이트
ios - UIView.animateWithDuration 완료
ios - Swift에서 Core Data로부터받은 배열 정렬
ios - SWIFT-xcode 6 베타 6.의 KVO. observeValueForKeyPath가 더 이상 호출되지 않습니다.
uiwebview - Simple Swift WebView가 작동하지 않음 (Xcode 6 Beta 3)
swift - Swift-UIBezierPath 추가 인수 '반경'호출