본문 바로가기
프로그래밍/파이썬기초

파이썬 random 객체 예제(randint, randrange)

by 조크리 2023. 9. 26.
반응형

 

 

 
 


목차

     

    1. 파이썬 random 객체란

     

    이번에는 파이썬의 random(랜덤)에 대해 살펴보겠습니다. 

    랜덤이란 무엇일까요?

     

    동전을 던졌을 때 앞면 또는 뒷면이 나오는 것,

    주사위를 던졌을 때 1~6중 숫자 1가지 나오는 것,

    복권 추첨

    음악 재생 순서 섞기(셔플) 등등

     

    어떤 범위 내에서 무엇이 나올 지 모르는 것

    무작위를 의미합니다.

     

    수의 범위 중에서 난수(random number)뽑는 것이 랜덤(random)이라고 볼 수 있죠. 

     

    랜덤 객체는 

    random.randint()

    random.choice()

    random.randrange()

    등의 다양한 함수가 뒤에 붙습니다.

     

    그 중 randint()라는 메소드(함수)는

    괄호 안에 시작 값과 끝 값을 적어주고, 그 사이에서 난수를 선택하라는 의미를 가집니다. 

     

    아래 코드처럼 random 객체를 쓰고 싶다면

    import random을 첫 줄에 써주어야 합니다.

    그리고 for 반복문을 써서 10개의 난수를 뽑도록 반복문을 작성해줍니다.

    반복문 안에 print, 즉 출력 명령어를 넣어 1~1000사이의 난수가 10번 출력되도록 해줍니다. 

    #1부터 1000까지의 자연수 중 랜덤하게 10개의 난수를 선택하여 출력하기
    import random
    for i in range(10):
      print(random.randint(1,1000))

     

    그럼 아래처럼 실행할 때마다 다른 난수가 10개 선택되어 출력됩니다. 

     

    2. random.randint(1,1000) 난수 10개 선택해서 합 출력하기

     

    이번에는 1부터 1000까지의 자연수 중 

    난수를 10개 선택한 뒤,

    그 합만 출력하도록 코딩해보겠습니다. 

    import random
    sum = 0
    for i in range(10):
      sum = sum + random.randint(1,1000)
    print(sum)

    역시 매번 실행시킬때마다 결과가 달라지는 것을 볼 수 있습니다. 

     

    3. random.randint(1,20) 5개의 난수를 출력하고, 그 평균도 출력하기

     

    이번에는 합이 아니라 평균을 출력해보겠습니다.

    1부터 20사이의 난수 5개를 뽑은 뒤, 출력해보고

    그 난수 5개의 평균을 출력해봅니다.

    import random
    sum = 0
    for i in range(5):
      n = random.randint(1,20)
      print(n)
      sum = sum + n
    average = sum/5
    print("1부터 20까지의 수 중 랜덤으로 5개의 숫자를 선택했습니다. 5개 숫자의 평균은 %.2f입니다."%(average))

     

    randint(1,20)이라고 작성하면 1이상 20이하의 자연수 중 랜덤으로 수를 선택하는 것을 의미합니다.

    코드를 실행시키면 아래처럼 결과가 나옵니다.

    물론 실행시킬때마다 결과는 달라집니다. 

     

    4. random.randrage(1,1001,100)

     

    random.randrange() 는

    range()함수에서의 수의 범위와 같은 범위를 같습니다.

    즉, random.randrange(1,1000)이면 1이상 999이하의 수 중 난수를 뽑는 것이죠.

     

    randrange()함수는 

    random.randrange(1,1001,100)처럼도 사용이 가능합니다.

    즉 1부터 100씩 뛰어세며 1001 미만까지의 수 중에서 한 숫자를 랜덤으로 뽑아라!는 것이죠.

     

    #랜덤 숫자 10개를 뽑는데, 1000이상 10001미만의 수이며 1000단위로 띄어세기한 수이다.
    import random
    sum = 0
    for i in range(10):
      # 변수 n을 만들어서 랜덤으로 뽑은 숫자를 변수에 저장해준다.
      n = random.randrange(1000, 10001, 1000)
      print(n)
      sum += n
    print("랜덤 숫자 10개의 합은 %d입니다."%(sum))

     

    그 결과는 아래와 같습니다.

    1000씩 띄어세기를 한 숫자들 중 랜덤으로 10개의 숫자를 뽑고 그 숫자들의 합을 구한 것이죠.

     

    물론 실행할 때마다 그 값은 달라집니다. 

     

    5. random.randrange()예제

     

    random.randrange()를 사용해 한 가지 예제를 풀어보겠습니다.

    나는 10만원을 가졌고, 1번 빵은 1000원이며 2번 빵은 2000원이다.

    친구 15명에게 랜덤으로 빵을 골라 사주기로 하였다.

    15명에게 사준 빵 값은 얼마인가? 그리고 남은 돈은 얼마인가?

     

    sum = 0
    for i in range(15):
      n = random.randrange(1000, 2001, 1000)
      print(n)
      sum += n
    left = 100000 - sum
    print("빵을 사는 데 {}원이 들었고, {}원이 남았습니다.".format(sum, left))

     

    결과를 보겠습니다.

    빵의 가격을 각각 출력한 이유는 random.randrange()의 실행 모습을 직관적으로 보기 위해서입니다. 

     

    6. 리스트와 for반복문 활용 예제

     

    마지막으로 리스트와 for반복문을 함께 사용하는 간단한 예제를 보겠습니다. 

    메뉴 리스트에는 5개의 음료가 있습니다.

    음료 5개의 가격은 가격 리스트에 적혀 있습니다. 

     

    매점 음료수 추천 프로그램(리스트 활용)

    menus = ['밀키스', '콜라', '사이다', '환타', '초록매실']

    prices = [1500, 2000, 1700,  2500, 1300]

     

    이제 아래처럼 출력을 한 번 해보겠습니다.

    음료수: 라고 적은 뒤

    그 아래 줄에

    음료수의 종류와 가격을 적어서 메뉴판을 나타내줍니다.

     

    이제 추천 음료수와 그 음료수의 가격을 출력해줍니다. 

     

     

    코드를 한 번 볼까요?

    우선 menus라는 리스트와 prices라는 리스트를 만들어줍니다.

    그리고 음료수라는 글자를 출력해줍니다. 

    \n 을 적어서 엔터키를 누른 효과를 줍니다. 

     

    그 아래는 for 반복문을 적어줍니다. 

    for 반복문에서 range()안에 들어 있는 범위는 

    len(menus) 즉! 리스트의 길이(항목의 개수)로 적어줍니다.

    항목의 개수가 5이기 때문에

    사실상

    for i in range(5)와 같다고 보면 됩니다.

    그럼 i는 0, 1, 2, 3, 4 가 되겠죠.

     

    이제 반복문 아래에는

    menus리스트 안의 항목과 prices리스트 안의 항목을 출력해주라는 명령어를 적어줍니다. 

     

    리스트 안의 항목을 불러올 때는 menus[0], menus[1] 처럼

    대괄호를 해주고 항목 번호를 써줍니다.

    리스트는 항목이 0번부터 시작되므로 i 라고 써주면 0, 1, 2, 3, 4가 되겠죠.

     

    그리고 r이라는 변수를 하나 만들어서 0부터 4까지의 수 중에 난수를 저장합니다.

    이제 추천 음료수와 음료수의 가격은 menus리스트의 r번째 항목, prices리스트의 r번째 항목이 됩니다. 

    menus = ['밀키스', '콜라', '사이다', '환타', '초록매실']
    prices = [1500, 2000, 1700, 2500, 1300]
    print('음료수: \n')
    for i in range(len(menus)):
      print(menus[i], prices[i])
    
    r = random.randint(0, len(menus)-1)
    print('\n추천 음료수: ', menus[r])
    print('음료수 가격: ', prices[r])

     

    다시 한 번 실행 시켜 보겠습니다.

    아까와는 다른 음료수를 추천해주었네요. 

    난수 r이 항목 번호가 되기에 실행할 때마다 다른 음료수를 추천해주게 됩니다. 

    반응형