코딩공부/예시로 살펴보는 파이썬

1부터 100까지 중복없이 숫자를 뽑아보자.

s1ru 2020. 4. 5. 16:24

학교에서 중복없이 학생들을 뽑을 일이 생각보다 많다. 발표하기 싫어하는 고학년에게 어쩔 수 없이 누군가에게 발표를 맡겨야하거나, 학생 자리를 바꾸거나, 당번을 뽑을 때도 많이 활용할 수 있다.

 

뭐든지 활용하기 나름이고 변형하기 나름이겠지만, 가장 기본적인 기능부터 살펴보도록 하자.

 

 

1. 랜덤으로 숫자를 뽑아보자.

중복과 관련없이 숫자를 뽑을 때 활용할 수 있는 코드이다.

1
2
3
4
5
import random                # 파이썬 내장 모듈 임포트
 
= random.randint(1,100)   # 1부터 100까지의 정수 중 랜덤으로 하나 뽑는다.
 
print(a)
 
 

범위를 지정하는 range함수와는 약간 다른데, 

range(1,100)은 1부터 99까지, random.randint(1,100)은 1부터 100까지라는 것에 유의하자.

 

 

2. 랜덤으로 숫자를 여러번 뽑아보자.

for 반복문을 활용하면 된다. 참 쉽죠? 

1
2
3
4
5
import random                    # 파이썬 내장 모듈 임포트
 
for i in range(10):                # 10번 뽑는다
    a = random.randint(1,100)   # 1부터 100까지의 정수 중 랜덤으로 하나 뽑는다.
    print(a)
 
 

 

3. 랜덤으로 뽑은 숫자를 한번에 살펴보자.

랜덤으로 나온 a를 그때마다 프린트하지 않고, 리스트에 넣어 한번에 프린트하면 되겠다.

1
2
3
4
5
6
import random                             # 파이썬 내장 모듈 임포트
alist=[]                                  # 빈 리스트를 생성한다.
for i in range(10):                    # 10번 뽑는다
    a = random.randint(1,100)   # 1부터 100까지의 정수 중 랜덤으로 하나 뽑는다.
   alist.append(a) # 리스트 끝에 a를 추가한다.
print(alist)
 

 

4. 중복없이 숫자를 뽑고싶다.

중복없이 숫자를 뽑아보자. 리스트에 있는지 비교해서 있으면 다시 뽑고, 없으면 뽑고 리스트에 추가하면 되겠다.

 

  4.1. 기본 코드 작성

1
2
3
4
5
6
7
8
9
10
import random
 
alist=[]                          # 뽑은 a를 넣어 중복 방지해주는 리스트         
for i in range(10):
  a = random.randint(1,100)       
  while a in alist :              # a가 이미 뽑은 리스트에 있을 때까지 다시 뽑자
    a = random.randint(1,100)
alist.append(a) # 새로운 a 값을 리스트에 추가
 
print(alist)
 

 

  4.2. 함수로 만들어보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import random
 
def random_int_no_again():
    al_list=[]                          # 뽑은 a를 넣어 중복 방지해주는 리스트         
    for i in range(100):
        a = random.randint(1,100)       
        while a in al_list :
            a = random.randint(1,100)al_list.append(a)
al_list.append(a)
        print (a)
    return al_list
 
 
random_int_no_again()
 

 

 

  4.3. 재귀함수로 구현해보자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import random
 
al_list=[]
 
def recursive_random_int_no_again(count):   
    if count == 0:                            #카운트가 0이 되면 작동 종료
        print(al_list)
        return
    a = random.randint(1,100
    while a in al_list :
         a = random.randint(1,100)
al_list.append(a)
    print(a)
    count-=1                                # 카운트를 -1하고, 함수를 다시 호출한다.
    recursive_random_int_no_again(count)
 
recursive_random_int_no_again(100)
 

 

  4.4. random 모듈에서 제공하는 기본 기능을 활용하자.

random.sample를 활용하면 중복없이 원하는 수만큼 뽑아낼 수 있다. 코드도 간결하고 오류가 날 가능성이 가장 낮기 때문에 이 방법이 가장 좋다고 할 수 있겠다.

1
2
3
4
import random
 
= random.sample(range(1,101),10# 1부터 100까지의 범위중에 10개를 중복없이 뽑겠다.
print(a)
 
 

 

다음 포스팅은 실제 교실에서 활용할 수 있도록 코드를 짜보겠다.