[Python] 파이썬 난수 생성(random 함수) 사용법 & 예제

게임에서 보면 무작위 확률, 무작위 아이템과 같은 "무작위"라는 용어가 많이 나옵니다. 그렇다면 우리는 이 무작위를 어떻게 구현할 수 있을까요? 프로그래밍에서는 무작위, 즉 예측할 수 없는 값을 생성하는데 임의의 숫자값 난수를 사용합니다. 파이썬에서 난수를 생성하려면 파이썬의 기본 라이브러리인 random 모듈을 사용하는데요. random 모듈은 다양한 난수 생성 함수를 제공하여 다양한 유형의 난수를 생성할 수 있습니다.
 
 

 파이썬 난수 사용법 

특정 범위의 난수 생성 - randint(x, y)

import random
random_integer = random.randint(1, 10)
print(random_integer)

결과 : 9
 
특정 범위에서 임의의 정수값을 추출하려면 randint() 메서드를 사용하면 됩니다. random.randint(x, y)의 형태로 사용하며 x이상 y이하(x <= n <=y)의 정수 난수를 생성합니다. 
 
 

특정 범위의 난수 생성(간격) - randrange(x, y, z)

import random
random_number1 = random.randrange(1, 10) # 1 ~ 9까지의 난수
random_number2 = random.randrange(1, 10, 2) # 1 ~ 9까지 2간격의 난수
print(random_number1, random_number2)

결과 : 2, 5
 
특정 범위에서 임의의 값을 추출할 때 randrange() 메서드도 사용할 수 있습니다. 이 메서드는 random.randint(x, y, z)의 형태로 사용하며 x이상 y미만(x <= n <y)의 난수를 생성합니다. 만약 z에 인자값을 추가한다면 범위 숫자의 간격을 설정할 수 있습니다. 예를 들어 위의 예제처럼 random_number2에 1 이상 10 미만의 숫자에 2의 간격을 설정한다면 홀수만 출력될 수 있도록 강제할 수 있겠죠. 
 
 

부동 소수점 난수 생성 - random( )

import random
random_number = random.random()
print(random_number)

결과 : 0.07710255900781537
 
부동 소수점 난수를 사용하려면 random.random() 메서드를 사용하면 됩니다. 이 메서드는 0에서 1 사이의 부동 소수점 난수를 생성합니다. 
 
 

특정 범위의 부동 소수점 난수 생성 - uniform(x, y)

import random
random_float = random.uniform(2.0, 5.0)
print(random_float)

결과 : 4.176297583029829
 
특정 범위의 부동 소수점 난수를 추출하고 싶다면 random.uniform(x, y) 메서드를 사용하시면 됩니다. 결과는 x <= n < y 형태로 x이상 y미만의 부동 소수점 난수를 생성합니다.
 
 

리스트, 튜플 등에서 무작위 요소 추출하기 - choice(x)

import random
ex_list = ["서울", "부산", "대구", "대전", "광주", "울산", "인천"]
random_element = random.choice(ex_list)
print(random_element)

결과 : 서울
 
random.choice(x)는 주어진 시퀀스(리스트, 튜플 등)에서 무작위로 하나의 요소를 선택하여 반환합니다.
 
 

리스트, 튜플 등에서 요소들을 무작위로 섞기 - shuffle(x)

import random
ex_list = ["서울", "부산", "대구", "대전", "광주", "울산", "인천"]
random.shuffle(ex_list)
print(ex_list)

결과 : ['대전', '울산', '대구', '서울', '광주', '부산', '인천']
 
random.shuffle(x)는 주어진 시퀀스(리스트, 튜플)의 요소들을 무작위로 섞습니다.
 


 

 로또번호 생성기 

import random

def generate_lotto_numbers():
    lotto_numbers = []
    
    while len(lotto_numbers) < 6:
        # 1부터 45까지의 무작위 정수를 생성
        number = random.randint(1, 45)
        
        # 중복된 숫자를 방지하기 위해 이미 생성된 번호인지 확인
        if number not in lotto_numbers:
            lotto_numbers.append(number)
    
    return sorted(lotto_numbers)

if __name__ == "__main__":
    lotto_numbers = generate_lotto_numbers()
    print("로또 번호:", lotto_numbers)

결과 : 로또 번호: [3, 14, 15, 22, 26, 41]
 
난수를 활용한 가장 대표적인 예제가 "로또번호 생성 프로그램" 이죠 위처럼 난수는 로또번호처럼 임의의 숫자를 생성하는 곳부터, 암호, 게임 등등 다양한 분야에서 활용할 수 있겠습니다.
 
 
 

댓글

Designed by JB FACTORY