소프트웨어와 생활웹 교과서
이 페이지의 목차
4단원 · 5차시

현상을 모델로 표현하기

모델링추상화확률 모델

코드 예제: Python · 예상 50분

학습 목표

  • 복잡한 현상의 원리를 변수와 규칙으로 이루어진 모델로 표현할 수 있다.

관련 성취기준

  • [12소생04-03]

    시뮬레이션 프로그램 구성 방법에 따라 복잡한 문제나 현상의 원리를 시뮬레이션 모델로 표현한다.

생각 열기 — 급식 줄을 어떻게 줄일까

종이 치자마자 120명이 한꺼번에 급식실로 달려간다. 배식대는 하나, 한 명 받는 데 20초쯤. 학생회가 두 가지 안을 냈다.

  • 안 ①

    배식대를 하나 더

    배식대와 배식하는 사람이 하나 더 필요하다. 돈과 사람이 든다.

  • 안 ②

    학년별로 5분씩 나눠 오기

    1학년은 바로, 2학년은 5분 뒤, 3학년은 10분 뒤. 돈은 들지 않는다.

추상화 — 남길 것과 덜어 낼 것

추상화(abstraction) — 문제를 푸는 데 필요한 핵심만 남기고 나머지 세부 사항은 덜어 내는 일는 물음에 필요한 핵심만 남기는 일이다. 물음은 「줄을 서서 기다리는 시간을 줄이려면?」이다.

분류하기급식 줄 모델에 남길까, 덜어 낼까

카드를 누른 뒤, 넣을 통을 누른다. 통 안의 카드를 누르면 다시 나온다.

남긴다

덜어 낸다

결정론 모델과 확률 모델

우연을 넣느냐 마느냐
결정론 모델확률 모델
규칙「한 명에 꼭 20초」처럼 정해진 값「평균 20초, 사람마다 10~30초」처럼 우연이 섞인 값
같은 변수로 돌리면언제나 같은 결과돌릴 때마다 조금씩 다른 결과
좋은 점단순해서 계산과 설명이 쉽다현실의 들쭉날쭉함을 담는다
조심할 점현실이 들쭉날쭉하면 어긋난다여러 번 돌려 결과를 모아 봐야 한다

결정론 모델 — 파이썬으로

모두 한꺼번에 와서 줄을 서고, 한 명 배식에 꼭 20초가 걸린다고 해 보자. 그러면 배식대가 하나일 때 내 앞에 9명이 있으면 나는 9 × 20 = 180초를 기다린다.

예상해 보기

배식대가 1곳일 때 120명의 평균 대기 시간은 대략 몇 분일까? (가장 앞 학생은 0초, 가장 뒤 학생은 119 × 20초를 기다린다)

결과 바로 보기
19.8분
Python결정론 모델 — 배식대 수에 따른 평균 대기
# 급식 줄 모델 — 모두 한꺼번에 와서 줄을 선다, 한 명 배식에 20초
학생 = 120
배식초 = 20
for 배식대 in [1, 2, 3]:
    대기합 = 0
    for 차례 in range(학생):
        기다림 = (차례 // 배식대) * 배식초   # 내 앞에서 같은 배식대를 쓴 사람 수 × 20초
        대기합 += 기다림
    print(f'배식대 {배식대}곳: 평균 {대기합 / 학생 / 60:.1f}분, 마지막 학생 {기다림 / 60:.1f}분')
확인된 실행 결과
배식대 1곳: 평균 19.8분, 마지막 학생 39.7분
배식대 2곳: 평균 9.8분, 마지막 학생 19.7분
배식대 3곳: 평균 6.5분, 마지막 학생 13.0분

차례 // 배식대 는 몫이다. 배식대가 둘이면 0·1번 학생은 기다리지 않고, 2·3번 학생은 한 사람 몫(20초)을 기다린다. 이 모델로는 안 ① 의 효과는 알 수 있지만 안 ② 는 실험할 수 없다 — 모두 한꺼번에 온다고 정해 두었기 때문이다. 모델에 «도착하는 때»라는 변수가 필요하다.

확률 모델 — 시뮬레이터로

아래 시뮬레이터는 도착하는 때와 배식 시간에 우연을 넣은 확률 모델이다. ▶ 실험하기를 누를 때마다 실험 기록표에 한 줄씩 쌓이고, 바로 앞 실험의 줄 길이가 점선으로 남는다.

시뮬레이터점심시간 급식 줄 (지어낸 학교)

변수 · 입력

규칙 (10초가 한 걸음)

  1. 학생은 종이 친 뒤 2분 안에 아무 때나 도착한다. 나눠 오면 1학년은 0분, 2학년은 5분, 3학년은 10분부터.
  2. 배식대가 비면 줄 맨 앞 학생이 받는다.
  3. 한 명 배식에는 평균 시간의 0.5~1.5배가 걸린다(사람마다 다르다).

▶ 실험하기를 누르면 줄 길이의 변화가 그려진다.

실습

두 안을 견주는 실험

약 20분
  1. 아무것도 바꾸지 말고 세 번 실험하자. 평균 대기가 매번 같은가? 결정론 모델의 19.8분과 견주면?
  2. 안 ① — 배식대를 2곳으로 바꿔 세 번 실험하자.
  3. 안 ② — 배식대를 1곳으로 돌려놓고 「학년별로 5분씩 나눠서 온다」를 켜서 세 번 실험하자.
  4. 두 안을 함께 쓰면? 학생 수가 240명으로 늘면?
활동지

현상 → 모델 옮기기

스스로 점검
  • 세 경우를 숫자로 견주었다
  • 고른 안과 까닭을 적었다
  • 내 현상을 모델로 옮겼다

글자 규칙으로 살펴보는 점검표다. 다 켜졌다고 좋은 답이 되는 것은 아니다 — 마지막 판단은 내가 한다.

적은 내용은 이 브라우저에만 저장된다. 다른 컴퓨터로 옮기거나 제출하려면 내려받는다.

확인 문제

개념 확인 문제

보기를 누르면 바로 채점된다. 틀려도 해설을 읽으면 된다.

급식 줄 모델을 만들 때 덜어 내도 되는 것으로 가장 알맞은 것은?12소생04-03

같은 변수로 몇 번을 돌려도 언제나 같은 결과가 나오는 모델은?12소생04-03

「모두 한꺼번에 온다」고 정한 결정론 모델로 실험할 수 없는 안은?12소생04-03

파이썬 코드 기다림 = (차례 // 배식대) * 배식초 에서 배식대가 2, 배식초가 20일 때 차례가 5인 학생의 기다림은?12소생04-03

이 차시는 C 예제를 제공하지 않는다. 상단에서 다른 언어로 바꾸면 예제를 볼 수 있다.

교과서에서 찾기

이 차시에 대응하는 교과서 위치가 아직 정리되지 않았다. [확인필요]