파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto

파이썬

파이썬 로또 랜덤함수(python random, lotto)

파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto
풍아2018. 9. 22. 15:19

URL 복사 이웃추가

본문 기타 기능

신고하기

1.  첫번째 방법

#랜덤을 가져옵시다 import random # 로또 첫번째 방법 num = 1 arr = [i for i in range(1, 46)] # 1부터 45까지 생성 for i in range(0, num): random.shuffle(arr) # 섞어주기 arr_selected = arr[:6] # 6개만 선택 arr_selected.sort() # 정렬 print(arr_selected) # 출력

파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto


2. 두번째 방법

lotto = [] while(len(lotto) < 6): lotto.append(random.randint(1,45)) lotto = list(set(lotto)) print(lotto)

파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto


3. 제이 쉬운 마지막 방법
난 이 방법이 제일 맘에 듭니다 ㅎ

#제일 쉬운 세번째 방법 lotto = random.sample(range(1,45), 6) print(lotto)

파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto

`

공감

이 글에 공감한 블로거 열고 닫기

댓글 1 이 글에 댓글 단 블로거 열고 닫기

인쇄

랜덤 모듈은 난수값을 생성하기 위한 기능을 담고 있는 모듈로 다양한 랜덤 관련 함수를 제공하고 있다. 랜덤 모듈의 경우 게임등에서도 활용할 수 있지만 데이터 분석에서도 다양한 결과를 실험하기 위해서도 쓰일 수 있으며 화면에서 데이터들을 랜덤으로 노출하고 싶을 때에도 사용할 수 있는 등 활용 방법은 매우 다양하다.

랜덤 사용 방법

import random

random.random()	# 0~1의 실수값

기본적으로 random.random() 함수를 사용하면 0~1의 실수값을 호출하게 된다. 위의 random을 호출한 결과는 그때그때 다르겠지만

파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto
random()을 호출하면 0~1의 실수가 나온다.

이와같이 모두 0~1사이의 실수가 나오는 것은 확인할 수 있다.

값의 범위 지정하기

0~1의 값을 이용하여 다양한 랜덤을 구현할 수도 있겠지만, 값의 범위를 지정하여 보다 정교한 랜덤을 구현할 수 있다.

uniform

>>> random.uniform(1,6)
1.8382400407104706
>>> random.uniform(1,6)
1.6911172903066283
>>> random.uniform(1,6)
4.609651815893047

random() 함수 대신 uniform 함수를 사용하면, 첫번째 값부터 마지막 값의 사이의 실수값을 리턴한다.

정수 사용하기

실수값을 정수값으로 변형하여 사용할 수 있겠지만, 정수값으로 리턴해주는 함수 역시 지원하고 있다. uniform의 경우 데이터 분석에서는 활용할 수 있지만, 우리가 보편적으로 랜덤을 사용하는 것은 정수값을 리턴하는 경우가 많다.

randint

>>> random.randint(1,6)
2
>>> random.randint(1,6)
5
>>> random.randint(1,6)
3

이와 같이 주사위와 같은 기능을 매우 쉽게 구현할 수 있다.

심화, 로또 번호 생성하기

import random

lotto_set = set([])
while len(lotto_set) < 6:
    lotto_set.add(random.randint(1, 45))

print(lotto_set)

# {33, 5, 8, 12, 23, 26}

로또 번호는 중복된 값이 나올 수 없는 구조이기 때문에 중복이 될 수 없는 set형태로 값을 담으며, set 사이즈가 6이 넘어가면 중단하는 간단한 알고리즘이다.

연관포스팅

2020/12/08 - [Language/Java] - [Java] 자바 랜덤함수(Random) 및 Seed 설명

2020/11/26 - [Language/Java] - [Java] 자바로 로또 번호 생성하기

천리길도 한 걸음부터
- 한국 속담

  앞선 글들을 통해서 파이썬 코딩을 하기 위해서 알아두면 좋을 기초 지식에 대해서 적어보았습니다.

[A. Programming/Python] - [파이썬 기초] 자료형과 변수

[파이썬 기초] 자료형과 변수

언젠가 날기를 배우려는 사람은 우선 서고, 걷고, 달리고, 오르고, 춤추는 것을 배워야 한다. - 니체 이전 글들을 통해 파이썬 코딩을 시작하기 전 알아두면 좋다고 생각되는 PEP8, PyLint, Docstring,

yongbba.tistory.com

파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto

[A. Programming/Python] - [파이썬 기초] 인덱싱(Indexing), 슬라이싱(Slicing), 불변(immutable), 가변(mutable)

[파이썬 기초] 인덱싱(Indexing), 슬라이싱(Slicing), 불변(immutable), 가변(mutable)

배우지 않으면 곧 늙고 쇠해진다. - 주자  인덱싱(Indexing), 슬라이싱(Slicing), 불변(immutable), 가변(mutable) 이전 글에서는 파이썬에서 사용되는 자료형에는 어떤 것들이 있는지에 대해서 알아보았습

yongbba.tistory.com

파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto

[A. Programming/Python] - [파이썬 기초] dir(), help() 내장 함수(빌트인 함수) 사용법

[파이썬 기초] dir(), help() 내장 함수(빌트인 함수) 사용법

오늘 나무 그늘에서 쉴 수 있는 이유는 예전에 나무를 심었기 때문이다. - 워렌 버핏 이전 글들을 통해서 파이썬 자료형과 특징들에 대해 알아보았습니다. [A. Programming/Python] - [파이썬 기초] 자료

yongbba.tistory.com

파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto

[A. Programming/Python] - [파이썬 기초] 언더바, 언더스코어(_, __) 사용법

[파이썬 기초] 언더바, 언더스코어(_, __) 사용법

인내는 쓰나, 그 열매는 달다. - 장 자크 루소 이전 글에서 파이썬 내장 함수 중 처음에 유용하게 사용할 수 있는 dir() 함수와 help() 함수에 대해 알아보았습니다. [A. Programming/Python] - [파이썬 기초]

yongbba.tistory.com

파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto

  이번 글부터는 파이썬을 이용하여 프로그래밍을 진행해보려고 합니다. 아직 제어문이나 반복문에 대해서 이야기하지 않았기 때문에 코딩을 처음 하시는 분들이라면 어려울 수 있다고 생각합니다. 하지만 기존의 방식대로 순선대로 문법을 배우고 하기보단 프로그래밍을 하나씩 하면서 그때마다 기술을 해보려고 합니다.(코딩을 할 때 많이 사용되는 제어문, 반복문 등에 대한 문법조차도 설명을 따로 하지 않은 상태로 하는 것이 맞는지는 모르겠습니다...)

  어떤 프로그램을 만들어 보는 것이 좋을까 고민하다가 간단하면서도 여러 가지를 이야기 해볼 수 있을 것 같다는 생각에 로또(Lotto) 번호를 생성해주는 프로그램을 만들어보려고 합니다. 이번 글부터 하나씩 기능을 추가해가며 진행을 해보려고 합니다.

 로또 번호 생성 프로그램 만들기 - 1

  로또는 1~45까지의 숫자 중 6개의 숫자를 고른 후 그 숫자와 당첨번호를 비교하여 순위가 매겨지는 복권의 한 종류입니다. 관련된 자세한 설명은 아래의 공식 사이트에서 확인을 해볼 수 있습니다.

- https://www.dhlottery.co.kr/gameInfo.do?method=gameMethod

로또 6/45소개 < 로또 6/45 < 복권정보 | 동행복권

로또 6/45의 특징 로또는 온라인복권입니다. 온라인복권이란 복권 발행시스템을 갖춘 중앙전산센터와 정보통신망으로 연결된 단말기를 통해 복권의 발행 및 판매가 이루어지는 복권으로 인터넷

www.dhlottery.co.kr

  로또 번호를 생성하는 프로그램이란 1~45까지의 숫자 중 겹치지 않도록 6개의 숫자를 선택하는 것이라고 볼 수 있습니다. 이 글에서는 가장 기본인 겹치지 않도록 6개의 숫자를 임의로 뽑는 것까지 코딩을 해보려고 합니다.(다음 글들에서는 하나씩 기능을 추가해보려고 합니다.)

 랜덤 숫자 생성

  가장 먼저 여섯 개의 랜덤 숫자를 생성하는 것에 대해 알아보겠습니다. 파이썬에서는 랜덤 숫자를 생성하는 방법은 다양하게 존재하는데, 그중 'random' 모듈을 이용하여 해보도록 하겠습니다. 'random' 모듈을 경우 파이썬 표준 라이브러리로 아래의 사이트에서 정보를 확인할 수 있습니다.(앞서 알아본 dir()나 help()를 이용하여 정보를 확인해볼 수도 있습니다.)

- https://docs.python.org/ko/3/library/random.html

random — 의사 난수 생성 — Python 3.9.7 문서

random — 의사 난수 생성 소스 코드: Lib/random.py 이 모듈은 다양한 분포에 대한 의사 난수 생성기를 구현합니다. 정수에 대해서는, 범위에서 균일한 선택이 있습니다. 시퀀스에 대해서는, 무작위

docs.python.org

  random 모듈에서 제공하는 함수들 중 먼저 random() 함수를 이용하여 1~45 중 정수를 출력하도록 해보겠습니다.(위의 파이썬 표준 라이브러리 사이트나 help()를 이용하여 제공하는 함수들에 대해 확인 가능합니다.)

import random

print(random.random())				# 0.0 <= x < 1.0
print(random.random()*45)			# 0.0 <= x < 45.0
print(((random.random()*45)+1))		# 0.0 <= x < 46.0
print(int((random.random()*45)+1))	# 0 <= x < 46
파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto

  random() 함수의 경우, 0.0 이상 1.0 미만의 실수 중 하나의 숫자를 생성하여 줍니다. 이를 이용하여 1 이상 46 미만의 정수를 만들기 위해서는 int((random.random()*45)+1)와 같이 변경이 필요합니다. random 모듈에서는 이 외에도 다양한 함수들을 제공하고 있으며 이를 이용하면 더 효율적으로 작성이 가능합니다.

import random

print(random.randint(1, 45))		# 1 <= x <= 45
파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto

  위와 같이 randint() 함수를 이용하면 1 이상 45 이하의 정수 중 하나를 간단하게 만들어 볼 수 있습니다. 이 외에도 아래와 같은 방식으로도 가능합니다.

import random

print(random.choice(range(1, 46)))		# 1 <= x < 46
파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto

  위의 3가지 예제에서 보았듯 1~45 사이의 정수를 하나 생성하는 방법은 매우 다양하게 존재할 수 있습니다. 이 중 어떤 것을 선택하든 상관은 없지만 프로그램의 기능이 많아질수록 코드들은 더욱 복잡해질 수 있기 때문에 여러 모듈 등에서 제공하는 함수들을 잘 이용하는 것이 중요합니다.

  이제 하나의 숫자를 생성하는 것을 해보았으니, 6개의 숫자를 생성하는 것을 해보도록 하겠습니다. 가장 먼저 가능한 방법은 위에서 생성한 하나의 숫자를 생성하는 과정을 6번 반복하는 것입니다. 이를 위해 아래의 예제에서 for A in B: 형식의 제어문을 사용하려고 합니다.(A는 변수, B는 튜플, 리스트, 문자열 등이 올 수 있습니다.)

import random

for i in range(6):		# i = 0, 1, 2, 3, 4, 5
	print(random.randint(1, 45))
파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto

  6번 반복해서 random.randint(1, 45)를 출력하도록 하였는데, 이렇게 할 경우에는 위와 같이 중복되는 숫자가 나올 수도 있습니다. 이를 해결하기 위해 코드를 추가하여 이전 숫자와 현재 생성된 숫자가 같은지 확인하는 코드를 추가하여 해결할 수도 있을 것입니다. 하지만 코드가 점점 복잡해질 것이기 때문에 random 모듈에서 지원하는 함수를 이용하여 작성해보도록 하겠습니다.

import random

print(random.sample(range(1, 46), 6))
파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto

  위의 예제와 같이 sample() 함수를 이용하여 작성하여 실행하면 1~45까지의 정수 중 6개가 리스트 형식으로 출력되는 것을 확인할 수 있습니다. sample()의 경우 범위 내에서 중복되지 않도록 추출하는 기능을 제공하고 있으며, 이를 이용하여 1 이상 46 미만의 정수에서 6개를 뽑아내도록 작성해보았습니다.

import random

lottoNum = random.sample(range(1, 46), 6)
lottoNum.sort()
print(lottoNum)

  정렬을 위하여 리스트 타입에서 제공하는 sort() 함수를 이용하여 오름차순으로 정렬하는 부분을 추가하였으며, 다음 글들에서 이어서 진행을 하기 위해 Lotto.py라는 이름으로 작성한 코드를 저장한 후 실행을 해보았습니다.

파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto
파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto

  이와 같이 로또 번호 6개를 랜덤으로 생성하는 간단한 프로그램이 완성되었습니다. 이번 글에서 가장 이야기 하고 싶었던 것은 원하는 결과를 얻기 위해서 코딩을 하는 방법은 매우 다양하는 것과 파이썬에서 제공되는 여러 모듈들을 잘 활용하면 효율적인 코딩을 할 수 있다는 점입니다.

  다음 글부터는 이 프로그램의 기능들을 조금씩 추가하면서 파이썬 프로그래밍 방법에 대해서 조금씩 더 알아보려고 합니다.

파이썬 랜덤함수 로또 - paisseon laendeomhamsu lotto