1. 무작위 실수 생성
random() 함수는 0 이상 1 미만의 범위에서 무작위 실수를 반환합니다. 이 함수는 0은 포함하지만 1은 포함하지 않습니다.
import random
print(random.random()) # 0.0 이상 1.0 미만의 값
print(random.random()) # 예시 출력: 0.7428319382910234
print(random.random()) # 예시 출력: 0.1920384729183746
print(random.random()) # 예시 출력: 0.0
2. 지정된 범위 내 무작위 실수
uniform(a, b) 함수는 a 이상 b 미만의 범위에서 무작위 실수를 생성합니다.
import random
print(random.uniform(5, 9)) # 5.0 이상 9.0 미만의 값
print(random.uniform(5, 9)) # 예시 출력: 7.293847192837465
print(random.uniform(5, 9)) # 예시 출력: 5.0
3. 지정된 범위 내 무작위 정수
randint(a, b) 함수는 a 이상 b 이하의 범위에서 무작위 정수를 생성합니다.
import random
print(random.randint(3, 8)) # 3 이상 8 이하의 정수
print(random.randint(3, 8)) # 예시 출력: 6
print(random.randint(3, 8)) # 예시 출력: 3
4. 시퀀스에서 무작요소 선택
choice(seq) 함수는 리스트, 튜플, 문자열과 같은 시퀀스에서 무작위로 하나의 요소를 선택합니다.
import random
data = [10, 20, 30, 40, 50]
print(random.choice(data)) # 리스트에서 무작위로 하나 선택
# 예시 출력: 30
5. 시퀀스에서 여러 요소 무작위 선택
sample(seq, k) 함수는 시퀀스에서 k개의 무작위 요소를 선택하여 리스트로 반환합니다.
import random
data = [10, 20, 30, 40, 50]
print(random.sample(data, 3)) # 3개 요소 무작위 선택
# 예시 출력: [40, 20, 10]
6. 실습 예제
예제 1: 무작위 인증코드 생성
ASCII 코드를 활용하여 무작위 인증코드를 생성하는 방법입니다.
import random
def generate_upper():
return chr(random.randint(65, 90)) # 대문자 A-Z
def generate_lower():
return chr(random.randint(97, 122)) # 소문자 a-z
def generate_digit():
return str(random.randint(0, 9)) # 숫자 0-9
def create_verification_code(length=4):
code_chars = []
for _ in range(length):
char_type = random.randint(1, 3)
if char_type == 1:
code_chars.append(generate_upper())
elif char_type == 2:
code_chars.append(generate_lower())
else:
code_chars.append(generate_digit())
return ''.join(code_chars)
verification_code = create_verification_code()
print(f"생성된 인증코드: {verification_code}")
string 모듈을 활용한 더 간결한 방법:
import random
import string
def generate_upper():
return random.choice(string.ascii_uppercase)
def generate_lower():
return random.choice(string.ascii_lowercase)
def generate_digit():
return random.choice(string.digits)
예제 2: 추첨 프로그램
회사 연말 행사에서 사용할 추첨 프로그램입니다. 각 상품은 한 번만 당첨될 수 있습니다.
import random
import time
participants = ['김민준', '이서아', '박도윤', '최하은', '정지우', '윤시우', '강서윤', '한지우']
def draw_lottery(participant_list, prize_name, winners, wait_seconds=3):
print(f"\n{prize_name} 추첨을 시작합니다. 엔터 키를 누르세요.")
input()
selected = random.sample(participant_list, winners)
print(f"{prize_name} 당첨자: {selected}")
for winner in selected:
participant_list.remove(winner)
time.sleep(wait_seconds)
return participant_list
# 3등 추첨 (3명)
participants = draw_lottery(participants, "3등", 3)
# 2등 추첨 (2명)
participants = draw_lottery(participants, "2등", 2)
# 1등 추첨 (1명)
participants = draw_lottery(participants, "1등", 1)
print(f"\n미당첨자 명단: {participants}")