[Swift]Swift random(), randomElement() 함수 알아보기

2022. 2. 11. 01:13·iOS&Swift

Swift를 공부하던 중 랜덤하게 값을 뽑는 함수를 사용해 보았다.

그래서 이번엔 Swift random(), randomElement()에 대해 기록해 보쟈!!🎉

🔸 Swift에서 random() 함수는,

  • 참고 : https://developer.apple.com/documentation/swift/int/2995648-random
 static func random(in range: Range<Int>) -> Int
범위(range)를 매개변수로 범위 안에 있는 값을 랜덤하게 Int 값을 반환해 준다. 때문에, 중복해 같은 값이 나올 수 있다.
for _ in 1...3 {
    print(Int.random(in: 1..<10))
}
//3
//3
//1

여기서,

random() 함수는 반환 타입이 Int로 고정이고, 매개 변수가 범위이기 때문에, 연속적인 값에서만 반환이 가능하다.

하지만, randomElement() 함수는 배열이라 다른 여러 컬렉션 안 임의의 요소를 반환해 주기 때문에 좀 더 다양하게 사용이 가능하다.

 

🔸 Swift에서 randomElement() 함수는,

  • 참고 : https://developer.apple.com/documentation/swift/array/2994747-randomelement
func randomElement() -> Element?
매개변수는 없으며 옵셔널 타입의 요소를 반환해 준다. 때문에, 사용에 있어 옵셔널 바인딩 또는, 강제 추출이 필요하다.
var names = ["시원", "무개", "길동", "우치"]
for _ in 1...3 {
    print(names.randomElement()!)

}
옵셔널 바인딩을 하면,
var names = ["시원", "무개", "길동", "우치"]
for _ in 1...3 {
    if let name = names.randomElement() {
        print(name)
    } else {
        print("nil")
    }

}
중복되지 않도록 이름을 출력하고 싶으면,
추출과 동시에 배열 또는 모든 컬렉션에서 요소를 제거 시키면, 중복 반환을 방지할 수 있다.
var names: [String] = ["시원", "무개", "길동", "우치"]
for _ in 1...6 {
    if let name = names.randomElement() {
        print(name)
        names.remove(at: names.firstIndex(of: name)!)
    } else {
        print("nil")
    }

}
//우치
//시원
//무개
//길동
//nil
//nil

'iOS&Swift' 카테고리의 다른 글

[Swift] Protocol  (0) 2022.02.23
[Swift] 객체지향(OOP)  (0) 2022.02.23
[Swift] 옵셔널 추출  (1) 2022.02.14
[Swift]Class, Instance, Object 알아보기  (0) 2022.02.07
[Swift]옵션널 기본  (1) 2022.01.31
'iOS&Swift' 카테고리의 다른 글
  • [Swift] 객체지향(OOP)
  • [Swift] 옵셔널 추출
  • [Swift]Class, Instance, Object 알아보기
  • [Swift]옵션널 기본
Esiwon
Esiwon
iOS 개발 블로그
  • Esiwon
    시원한 코드 기록
    Esiwon
  • 전체
    오늘
    어제
    • 분류 전체보기 (70)
      • iOS&Swift (24)
      • git & github (1)
      • 코테 (41)
      • 네부캠 회고 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    GCD
    BFS
    코딩테스트
    이분탐색
    Property wrapper
    백준
    동시성
    비동기
    ios
    챌린지
    Swift
    실버
    Combine
    Race Condition
    photos
    그리디
    photoUI
    dfs
    다이나믹 프로그래밍
    코테
    알고리즘
    탐색
    회고
    네부캠
    구현
    PhotoKit
    브루트포스 알고리즘
    노드
    재귀
    완전탐색
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Esiwon
[Swift]Swift random(), randomElement() 함수 알아보기
상단으로

티스토리툴바