ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 랜덤함수
    Swift 2020. 11. 4. 15:35

    안녕하세요. 그린입니다!

    이번 포스팅에서는 짧게나마 랜덤함수에 대해 포스팅을 하겠습니다.

    제가 랜덤함수를 찾아보고 학습하게된 계기는 제 블로그의 Swift > 개발 메뉴에서 확인할 수 있듯이

    묵찌빠 게임을 프로그래밍하는 도중 컴퓨터의 묵찌빠를 랜덤하게 받아와야하는 일이 생겼습니다.

    이에 차근차근 스위프트 문법을 학습하던 저는 우선 구글링을 통해 스위프트에서 랜덤함수 사용에 대해 학습을 해봤습니다.

     

    자 그럼 스위프트에서 랜덤함수를 정의하고 원하는 조건에 맞게 랜덤값을 도출해내는 과정을 같이 진행해보시죠~!

     

    스위프트 4.2 버전 이후 부터 모든 정수와 실수 타입은 자체적인 랜덤함수를 제공해주도록 업데이트 되었습니다!

    그래서 이 포스팅에서는 4.2버전 이후와 이전으로 둘 다 알아보겠습니다~!!

     

    [Swift 4.2 이후]

    간단하게 let num = .random(in: 1...6) 이라고 명시해주면 1부터 6사이의 Int 난수를 생성합니다.

     

    Int형 난수 생성

    업데이트 이후 참 간단해졌습니다..!

    [Swift 4.2 이전]

    Swift에서 제공하는 랜덤함수는 크게 3가지가 있습니다.

    -. arc4random()

    -. arc4random_uniform(UInt32)

    -. drand48()

     

    그럼 하나씩 알아보겠습니다!

    1. arc4random()

    해당 함수는 리턴타입이 UInt32입니다. 즉 0부터 2^32-1 숫자까지의 범위를 가집니다.

    그리하여 해당 함수는 0과 2^32-1 사이의 랜덤한 난수를 반환합니다..!

    2의 32제곱은 대략 4,294,967,296‬ 이정도네요..ㅎㅎ (42억정도.. 이 이상 넘어갈일은 잘 없겠죠?)

    2. arc4random_uniform(UInt32)

    해당 함수는 위와 동일하게 기본 리턴 타입이 UInt32입니다.

    파라미터도 UInt32 범위의 값만 받습니다.

    이걸 쓰는 예시는 만약 우리가 0부터 5까지의 난수를 생성해주고 싶다면

    arc4random_uniform(6) 이라고 함수를 정의해줍니다.

    그럼 0~5까지의 난수가 생성됩니다.

    저는 헷갈려서 arc4random() 함수에 유니폼, 즉 옷을 입혀 원하는 숫자의 범위만 난수생성을 해주는것으로 기억하고 있습니다!!

    그럼 간단하게 정의하는 예시를 보겠습니다.

    0~5까지 중 난수 생성

    -. 참고로 만약 터미널에서 실습을 해보실 경우 import Foundation을 하여 줘야 기본 함수들을 사용할 수 있습니다.

    만약 여기서 1부터 6까지 주사위처럼 난수를 생성하고 싶으면 간단합니다.

    1~6까지 중 난수 생성

    위와 같이 함수 뒤 +- 를해서 값의 범위를 지정해서 난수를 생성할 수 있습니다.

    3. drand48()

    해당 함수는 리턴타입이 Double입니다. 즉 0부터 1.0 사이의 난수를 리턴합니다.

    그게 다입니다^^

    만약 위처럼 함수 뒤 +- 로 범위를 지정해줄수도 있겠죠?

     

    이상으로 이번 포스팅에서는 스위프트에서 기본적으로 제공하여 사용되는 랜덤함수에 대해 알아봤습니다.

    게임이나 여러 방면에서 난수 생성은 꼭 필요하고 언젠가 쓰이는 항목이니 익혀두시면 좋을것 같습니다~!!

    그럼 다음 포스팅에서는 본 문법 학습 커리큘럼 하던 그대로 만나요~^^

    감사합니다!

     

    'Swift' 카테고리의 다른 글

    접근레벨 및 이니셜라이저 관련  (0) 2020.11.19
    객체지향 프로그래밍 패러다임  (0) 2020.11.08
    구조체와 클래스  (0) 2020.11.04
    옵셔널  (0) 2020.11.03
    특수 기호와 문자 읽는법  (0) 2020.11.02
Designed by Tistory.