Programming Language/Python 기본문법

[Python] 기본 문법(6): random 모듈 - shuffle(), sample()

lxvxxu 2024. 7. 18. 02:43

 

random.shuffle()

리스트와 같은 객체의 원소들을 무작위로 셔플하여 섞어 주는 함수

원소들의 인덱스를 무작위로 변경해 주는 것

 

※ 머신러닝, 딥러닝 시 훈련 set과 테스트 set을 만들 때 유용하게 사용할 수 있다.

shuffle(객체/인스턴스명)

 

 

예시: 로또 번호 뽑기

# 로또 번호 뽑기
# 1~45 숫자를 list에 저장
# list를 shuffle()
# 6개 출력


import random

candidate_numbers = [x+1 for x in range(45)]    # 1 ~ 45까지의 숫자가 저장
random.shuffle(candidate_numbers)

print(candidate_numbers[:6])

 


random.sample()

sequence*에서 지정한 숫자만큼의 요소들을 랜덤으로 뽑아 리스트를 반환해주는 함수

어딘가에 따로 저장해둘 필요가 없다. 바로 원하는 개수만큼 랜덤 값을 뽑을 수 있다.

구현한 알고리즘을 테스트하고 싶을 때 테스트용으로 사용할 예제를 쉽게 만들 수 있다.

 

* sequence: 리스트, 집합, range() 등 random의 범위가 될 sequence 입력

* k: 반환될 리스트의 크기 입력

 

※ 유의점

print(random.sample(my_ID, k=1))

 

위와 같은 코드를 입력하면

 - 값 (X)

으로 출력되는 것이 아닌

 - [값] (O)

으로 출력된다.

따라서 대괄호를 함께 출력할 것인지 고려해야 한다.

 

예시

(1) 5개 과일 中 2개 과일 랜덤 출력

import random
mylist = ["apple", "banana", "cherry", "orange", "blueberry"]
print(random.sample(mylist, k=2))
실행 결과
['orange', 'bluberry']

 

 

(2) 0 ~ 99 中 10개의 숫자를 랜덤으로 출력

방법1)

# 0 ~ 99 中 10개의 숫자를 랜덤으로 출력
# 방법 1

import random

my_list = [x for x in range(100)]
print(random.sample(my_list, 10))

 

방법2)

# 0 ~ 99 中 10개의 숫자를 랜덤으로 출력
# 방법 2

import random
new_list = random.sample(range(100), 10)
print(new_list)

참고 링크

https://m.blog.naver.com/regenesis90/222347130938

https://needneo.tistory.com/131

 

* 참고 : zip() 함수의 이해 - https://blog.naver.com/regenesis90/222346953808