Python

[NumPy] np.random.randint를 이용하여 로또 번호 생성기 만들기

주댕이 2024. 1. 17. 10:48

# 로또 번호 생성기

  • 1~45 사이 난수 7개 생성(로또 당첨 번호 6개 + 보너스 번호 1개)
  • 중복되는 번호가 없어야 함
  • 오름차순으로 정렬

 

# 방법 1

import numpy as np

# Initialize an empty list for lotto numbers.
lotto = []

# Generate 6 unique lotto numbers between 1 and 45.
for i in range(6):
    # Generate a random number and ensure it's not a duplicate.
    num = np.random.randint(1, 46)
    while num in lotto:
        num = np.random.randint(1, 46)
    lotto.append(num)

# Sort the generated lotto numbers.
lotto.sort()

# Initialize an empty list for the bonus number.
bonus = []

# Generate a unique bonus number not present in the lotto numbers.
bonus_num = np.random.randint(1, 46)
while bonus_num in lotto:
    bonus_num = np.random.randint(1, 46)
bonus.append(bonus_num)

# Display the generated lotto numbers and bonus.
print(f'로또 당첨 번호: {lotto} + 보너스 번호: {bonus}')

# 로또 당첨 번호: [6, 8, 10, 14, 17, 44] + 보너스 번호: [23]

 

 

# 방법 2

def lotto(n):  
    # Initialize an empty list for lotto numbers.
    numbers = [] 
    while len(numbers) < n: 
        # Generate a random number between 1 and 45.
        num = np.random.randint(1, 46) 
        # Check if the generated number is not in the list to avoid duplicates.
        if num not in numbers:  
            numbers.append(num) 
            numbers.sort()
    return numbers 

def bonus(n):
    # Initialize an empty list for the bonus number.
    bonus_number = []
    while len(bonus_number) < n:  
        # Generate a random number between 1 and 45.
        num = np.random.randint(1, 46) 
        # Check if the generated bonus number is not in the list to avoid duplicates.
        if num not in bonus_number: 
            bonus_number.append(num)
            bonus_number.sort()
    return bonus_number

# Display the generated lotto numbers and bonus.
print(f'로또 당첨 번호: {lotto(6)} + 보너스 번호: {bonus(1)}')

# 로또 당첨 번호: [26, 32, 35, 36, 37, 42] + 보너스 번호: [29]

 

 

# 방법 3

# Generate a 1-dimensional NumPy array with random integers from 1 to 45 for lotto numbers
lotto = np.random.randint(1, 46, size=(6,))

# Generate a random integer from 1 to 45 for the bonus number
bonus = np.random.randint(1, 46)

# Ensure unique lotto numbers are generated; loop until unique numbers are obtained
while np.unique(lotto).size != len(lotto):
    num = np.random.randint(1, 46)
    lotto = np.append(lotto, num)

# Sort the generated lotto numbers
lotto = np.sort(lotto)

# Ensure the bonus number is not in the lotto numbers; loop until a unique bonus number is obtained
while bonus in lotto:
    bonus = np.random.randint(1, 46)

# Display the generated lotto numbers and bonus.
print(f'로또 당첨 번호: {lotto} + 보너스 번호: {bonus}')

# 로또 당첨 번호: [ 2  6 20 25 29 40] + 보너스 번호: 32
728x90

'Python' 카테고리의 다른 글

[NumPy] 배열의 인덱싱과 슬라이싱  (0) 2024.01.17
[NumPy] 배열의 연산  (0) 2024.01.17
[NumPy] 배열 생성  (0) 2024.01.17
[Python] 가상 환경 사용하기  (2) 2024.01.16
[Python] 클래스 상속  (0) 2024.01.12