Python3 기준으로 로또 번호 생성 함수를 만들어 보았다.
굳이 shuffle을 하지 않아도 random으로 뽑히기는 하지만
실제 공을 추첨할 때 섞으면서 뽑으니까... 비슷하게 구현해 보았다.

 

#!/usr/bin/env python3

from random import random, shuffle

def lotto(total, pick):
    nums = list(range(1, total+1))
    picked_nums = []
    for i in range(pick):
        shuffle(nums)
        picked_index = int(random() * len(nums))
        picked_num = nums.pop(picked_index)
        picked_nums.append(picked_num)
    return picked_nums

# 로또 공 45개 중 6개를 뽑아보자
if __name__ == '__main__':
    print(lotto(45, 6))

  1. 땅꼬마
    2017.06.13 10:58 신고

    from random import random, shuffle --> 줄에 빨간라인이 길게 생기고
    결과값이 SyntaxError: multiple statements found while compiling a single statement
    뜨는데요.

    • 부들부들
      2017.06.22 16:09 신고
      수정 및 삭제

      카피페이스트 하실때 "출처: http://snoopybox.co.kr/1750 [snoopybox]"는 지우고 하셔야죠;

  2. 오소고날
    2017.11.22 08:56 신고

    감사합니다. 많은 도움이 되었습니다.

    그냥 한가지 고려사항은
    picked_index = int(random() * (len(nums) - i))에서
    random()함수 특성상 0=< x <1이라서
    int변환 값이 아무리 높아도 최대 42밖에 나올수가 없겠네요? int(0.99*(44-1))=42

    • BlogIcon snoopybox
      2018.06.15 02:17 신고
      수정 및 삭제

      네 제가 실수했네요. i가 for문 돌면서 증가하고 len(nums)는 pop() 때문에 감소하니 결국 2씩 감소하게 되겠네요. -i 부분은 없어야 하는데 제가 실수했습니다. 수정해 두었습니다.