본문 바로가기
카테고리 없음

random의 멤버 함수

by 컴업정 2023. 3. 29.

1. 모듈 임포트

import random

 

2. 멤버 함수들

* 설명과 예제들은 chatGPT에서 받은 답변입니다.

  • randint(a, b): a와 b(포함) 사이의 임의의 정수를 반환합니다.

       예: 주사위 굴리기를 시뮬레이트하기 위해 1에서 6(포함) 사이의 임의의 정수를 생성합니다.

import random

dice_roll = random.randint(1, 6)
print(dice_roll)

 

  • randrange([start], stop[, step]): start(기본값 0)와 stop(제외) 사이의 범위에서 임의로 선택한 요소를 반환하며 선택적으로 step만큼 단계별로 진행합니다.

      예: 0에서 10 사이의 임의의 짝수 정수를 선택합니다.

import random

even_num = random.randrange(0, 11, 2)
print(even_num)

 

  • choice(seq): 비어 있지 않은 시퀀스 seq에서 무작위로 선택된 요소를 반환합니다.

       예: 옵션 목록에서 임의의 색상을 선택합니다.

import random

colors = ["red", "green", "blue", "yellow"]
random_color = random.choice(colors)
print(random_color)
 
  • sample(population, k): 비어 있지 않은 시퀀스 population에서 무작위로 샘플링된 k 고유 요소를 포함하는 새 목록을 반환합니다.

       예: 숫자 목록에서 세 개의 고유한 요소를 무작위로 선택합니다.

 
import random

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
random_numbers = random.sample(numbers, 3)
print(random_numbers)

 

  • random(): 0과 1 사이(1 제외)의 임의 부동 소수점을 반환합니다.

       예: 0과 1 사이의 무작위 확률 생성(1 제외):

import random

probability = random.random()
print(probability)
 
  • uniform(a, b): a와 b(a와 b 포함) 사이의 임의 부동 소수점을 반환합니다.

       예: 0에서 100 사이의 임의 부동 소수점 생성:

import random

random_float = random.uniform(0, 100)
print(random_float)
 
  • shuffle(seq): 목록 seq의 요소를 제자리에서 무작위로 섞습니다.

      예: 카드 목록의 요소를 섞습니다.

import random

cards = ["Ace", "King", "Queen", "Jack", "10", "9", "8", "7"]
random.shuffle(cards)
print(cards)
 

 

3. 마치며

    기존에 MFC 할 때 썼던 기본 rand함수들은 예상이 되는 random이였다. 
 
    예를 들어 1에서 10 random함수를 호출 하면 나오는 값들이 3, 7, 9,1 이런식이면
 
    프로그램을 재 시작 해도 마찬가지로 3, 7, 9, 1이 나오는 방식 이였다. 
 
    그래서 정말 random한 값을 받고 싶을 때는 다른 함수를 쓰고 수식으로 된 씨앗값을  사용 했는데
 
    파이썬의 random은 생각 보다는 정교 했다. 예상 되는 random은 아니였다.
 
    파이썬의 공식 레퍼런스에 가보면 'Mersenne Twister' 라는 난수 생성기를 사용 한다고 나온다.
  
    정확히 Mersenne Twister가 뭔지는 모르지만 예상 보다는 훌륭한 random 생성기 였다.
 
    하나 주의로 나온 내용은 random 모듈은 보안 목적으로 사용 해서는 안된다는 내용이다.
 
    내가 보안 목적으로 사용 할 것 까지는 아니지만 보안 목적으로 사용 할 경우에는 secrets모듈을 
 
    사용 해야 한다는 내용이 나온다. 혹, 보안 목적으로 사용 하려는 분들은 secrets 모듈을 사용 하시기 바란다.
 
    좀 더 자세한 내용은 공식 레퍼런스에서 확인 해보시기 바랍니다.

댓글