본문 바로가기

[Python] 52강 랜덤(random)과 확률 개념 이해하기

@도마22026. 1. 16. 18:00
728x90


이 강의는 파이썬 강의 52강입니다.
이전 강의에서는 콘솔 게임의 기본 구조와 게임 루프를 배웠습니다.
이번 강의에서는 게임과 실전 프로그램에서 아주 자주 쓰이는
랜덤(random)과 확률 개념을 다룹니다.

이 강의부터
프로그램 결과가 매번 달라지기 시작합니다.


랜덤이 왜 필요한가

지금까지 만든 프로그램은
항상 같은 입력 → 같은 결과를 냈습니다.

하지만 게임과 현실 프로그램은 다릅니다.

  • 적의 공격력
  • 아이템 드롭
  • 이벤트 발생

이런 요소는
예측할 수 없어야 재미와 현실감이 생깁니다.
그래서 랜덤이 필요합니다.


1️⃣ random 모듈 불러오기

랜덤 기능은
random 모듈에 들어 있습니다.

import random

이 한 줄이
랜덤의 시작입니다.


2️⃣ 랜덤 숫자 만들기 (randint)

가장 많이 쓰는 함수입니다.

import random

num = random.randint(1, 10)
print(num)
  • 1 이상
  • 10 이하

실행할 때마다
다른 숫자가 나옵니다.


3️⃣ 랜덤 선택하기 (choice)

리스트에서
무작위로 하나를 고를 수 있습니다.

items = ["칼", "방패", "물약"]

drop = random.choice(items)
print(drop)

게임 아이템 드롭에
자주 쓰입니다.


4️⃣ 확률의 기본 개념

확률은
어떤 일이 일어날 가능성입니다.

예를 들면:

num = random.randint(1, 100)

if num <= 30:
    print("성공")
else:
    print("실패")
성공 확률은
약 30%입니다.

5️⃣ 확률은 조건문으로 만든다

파이썬에는
“확률 함수”가 따로 있는 게 아닙니다.

랜덤 숫자 + 조건문
이 조합이 전부입니다.

if random.randint(1, 10) == 1:
    print("희귀 이벤트 발생!")

약 10% 확률입니다.


6️⃣ 게임에 랜덤 적용하기

간단한 전투 예제입니다.

import random

damage = random.randint(1, 5)
print("데미지:", damage)

매번 공격 결과가 달라집니다.


7️⃣ 랜덤을 쓸 때 주의할 점

랜덤은 강력하지만
남용하면 문제가 됩니다.

  • 결과를 예측하기 어려움
  • 테스트가 힘들어짐

그래서 랜덤은
상태 변경 지점에만 사용합니다.


8️⃣ 실습 예제

아래 조건의 프로그램을 만들어보세요.

  • 플레이어 체력 10
  • 매 턴마다
    • 1~3 랜덤 데미지
  • 체력이 0이 되면 종료
더보기
import random

hp = 10

while hp > 0:
    damage = random.randint(1, 3)
    hp -= damage
    print("데미지:", damage, "| 남은 체력:", hp)

print("게임 오버")

이번 강의 핵심 정리

  • 랜덤은 random 모듈로 사용한다
  • randint, choice가 가장 많이 쓰인다
  • 확률은 랜덤 + 조건문으로 만든다
  • 랜덤은 프로그램에 변화와 재미를 준다

728x90
도마2
@도마2 :: 도마의 코드노트

초보자를 위한 코딩 강의를 정리합니다. 파이썬부터 C#, Unity 게임 제작까지 차근차근 기록합니다. — 도마

목차