본문 바로가기
정보통신기술

파이썬에서 랜덤한 수를 가져오는 모듈에 관하여

by 주니미 2024. 12. 4.

파이썬 랜덤 모듈

파이썬에서 랜덤한 수를 생성하거나 가져올 때 주로 사용하는 모듈은 random 모듈입니다. 이 모듈은 다양한 방법으로 난수를 생성할 수 있도록 여러 함수를 제공합니다.


랜덤모듈과 관련된 주요 함수 소개

  1. random()
    • 0 이상 1 미만의 실수(float) 난수를 반환합니다.
    • 예:
      import random
      print(random.random())  # 0.0 <= x < 1.0
  2. randint(a, b)
    • a 이상 b 이하의 정수를 반환합니다.
    • 예:
      print(random.randint(1, 10))  # 1 <= x <= 10
  3. uniform(a, b)
    • a 이상 b 이하의 실수(float)를 반환합니다.
    • 예:
      print(random.uniform(1.5, 3.5))  # 1.5 <= x <= 3.5
  4. randrange(start, stop[, step])
    • start 이상 stop 미만의 정수 중에서 step 간격으로 난수를 반환합니다.
    • 예:
      print(random.randrange(0, 10, 2))  # 0, 2, 4, 6, 8 중 하나
  5. choice(sequence)
    • 시퀀스(리스트, 문자열 등)에서 무작위로 하나의 요소를 반환합니다.
    • 예:
      fruits = ['apple', 'banana', 'cherry']
      print(random.choice(fruits))  # 리스트에서 랜덤 선택
  6. choices(population, weights=None, k=1)
    • 리스트에서 가중치를 고려해 여러 요소를 선택합니다.
    • 예:
      items = ['gold', 'silver', 'bronze']
      print(random.choices(items, weights=[5, 3, 1], k=2))
  7. shuffle(sequence)
    • 리스트의 요소를 무작위로 섞습니다.
    • 예:
      numbers = [1, 2, 3, 4, 5]
      random.shuffle(numbers)
      print(numbers)  # 섞인 리스트 출력
  8. sample(population, k)
    • 중복 없이 리스트에서 k개의 요소를 무작위로 선택합니다.
    • 예:
      numbers = [1, 2, 3, 4, 5]
      print(random.sample(numbers, 3))  # 리스트에서 3개 요소 선택

예제 코드

import random

# 1. 0 이상 1 미만의 실수 생성
print("random():", random.random())

# 2. 1 이상 10 이하의 정수 생성
print("randint(1, 10):", random.randint(1, 10))

# 3. 5.5 이상 9.5 이하의 실수 생성
print("uniform(5.5, 9.5):", random.uniform(5.5, 9.5))

# 4. 0부터 10 미만의 짝수 생성
print("randrange(0, 10, 2):", random.randrange(0, 10, 2))

# 5. 리스트에서 랜덤 요소 선택
colors = ['red', 'green', 'blue']
print("choice(colors):", random.choice(colors))

# 6. 리스트에서 가중치 기반 선택
print("choices(colors, weights=[2, 1, 1], k=2):", random.choices(colors, weights=[2, 1, 1], k=2))

# 7. 리스트 섞기
numbers = [1, 2, 3, 4, 5]
random.shuffle(numbers)
print("shuffle(numbers):", numbers)

# 8. 중복 없이 3개 요소 선택
print("sample(numbers, 3):", random.sample(numbers, 3))

참고

더 높은 보안 수준의 난수가 필요한 경우 secrets 모듈을 사용할 수 있습니다. 이 모듈은 암호학적으로 안전한 난수 생성에 적합합니다.
또한, 난수를 생성할 때 특정 규칙을 따르고 싶다면 numpy 라이브러리의 난수 생성 기능도 사용할 수 있습니다.