-
[Python] 5. 랜덤 함수(random, randrange, randint, choice)Programming/Python 2021. 7. 5. 20:00
[1] random() 이용
from random import * print(random()) # 0.0 ~ 1.0 미만의 임의의 값 생성 print(random() * 10) # 0.0 ~ 10.0 미만의 임의의 값 생성 print(int(random() * 10)) # 0.0 ~ 10.0 미만의 임의의 정수 값 생성 print(int(random() * 10) + 1) # 1.0 ~ 11.0 미만의 임의의 정수 값 생성 # 즉, 1.0 ~ 10.0 미만의 임의의 정수 값 생성
from random import * 을 통해 random 모듈을 import해야 random() 함수를 사용할 수 있다.
random() 함수는 0 ~ 1.0 미만의 임의의 값을 생성할 수 있으며, 원하는 범위 내에 있는 임의의 값을 출력하기 위해선 적절한 수를 더하고 곱해주어야 한다.
또한, 임의의 정수 값을 출력하고 싶다면, int로 Casting을 해주어야 한다.
[2] randrange()
from random import * print(randrange(0, 10)) # 0 ~ 10 미만의 임의의 정수 값 출력 print(randrange(0, 11)) # 0 ~ 11 미만의 임의의 정수 값 출력 # 즉, 0 ~ 10 이하의 임의의 정수 값 출력
[1]에서 다룬 random() 함수를 통해 임의의 정수 값을 출력하는 것은 생각보다 번거로울 수 있다. 원하는 범위에 따라 수를 곱해주고 더해주어야 하며, int형으로 Casting 해주어야 하기 때문이다.
이를 보완하기 위해, randrange()라는 함수가 있다. 원하는 범위를 입력하면 그 범위 내에 있는 임의의 정수 값을 반환하여준다.
이 때 주의해야할 점은, randrange(0, 10) 은 0 ~ 10 미만의 임의의 정수값을 출력한다. 즉, 0 ~ 9 사이의 임의의 정수값을 출력하는 것이다. 따라서, 0 ~ 10 사이의 임의의 정수값을 출력하고 싶다면, randrange(0, 11)과 같이 함수를 작성해야한다.
[3] randint()
from random import * print(randint(0, 10)) # 0 ~ 10 이하의 임의의 정수 값 출력
[2]에서 다룬 randrange()는 0 ~ 10 사이의 임의의 정수값을 출력하고 싶을 때, randrange(0, 11)와 같이 함수를 작성해야 했다. 이러한 표현은 우리의 입장에서 조금 헷갈릴 수도 있다.
이러한 불편함을 해소하기 위해, randint() 함수를 사용할 수 있다. randint(0, 10)은 0 ~ 10 이하의 임의의 정수 값을 반환해준다. 따라서 randrange()에 비해, 보다 직관적으로 받아들여지는 함수라는 생각이 든다.
[4] choice()
from random import * language = choice(["C", "C++", "Python", "Java"]) print(language)
위 코드에서 볼 수 있는 choice() 함수는 아무 원소나 뽑아주는 함수라고 생각하면 된다.
C, C++, Python, Java 중 한 원소가 랜덤으로 뽑힌 후 language에 할당되는 것이다.
[5] shuffle(list)
from random import * lst = [1, 2, 3, 4, 5] print(lst) # [1, 2, 3, 4, 5] shuffle(lst) print(lst) # [2, 5, 4, 3, 1]
위와 같은 리스트 내 자료들을 무작위로 섞어주는(shuffle) 함수이다.
[6] sample(list,value)
from random import * lst = [1, 2, 3, 4, 5] print(lst) # [1, 2, 3, 4, 5] print(sample(lst,3)) # [5, 3, 2]
위와 같은 리스트 내 자료들 중, 원하는 수만큼 무작위로 뽑을 수 있는 함수이다.
choice는 한 가지만 뽑을 수 있었다면, sample은 원하는 수만큼 뽑을 수 있다는 장점이 존재한다.
*본 글은 코딩 유튜버 '나도코딩'님의 무료강의를 바탕으로 내용을 정리 및 추가한 글입니다.
https://www.youtube.com/watch?v=kWiCuklohdY&t=5934s
'Programming > Python' 카테고리의 다른 글
[Python] 7. 문자열 처리 함수 (0) 2021.07.07 [Python] 6. 슬라이싱(Slicing) (0) 2021.07.05 [Python] 4. 숫자 처리 함수 (0) 2021.07.04 [Python] 3. 연산자 (0) 2021.07.04 [Python] 2. 변수 (0) 2021.07.04