レジを急いでいるのに、なぜ行列は短くならないのでしょう? 信号待ちの車にも、同じ考え方を使えるのでしょうか?
モデル化は、調べる目的に合わせて現実を単純化して表すこと。シミュレーションは、そのモデルを使って試すことです。
文化祭のワッフル屋を例に見ていきましょう。
先に結論:列の残りは「入る数」と「出る数」で変わる
- 次の残り=前の残り+到着−実際に対応した人数。 対応できる上限と、実際に対応する人数は別。
- 平均が同じでも、来るタイミングで列は変わる。 空いていた時間の対応能力は、後から使えない。
- レジ待ちも信号待ちも、残りの数を更新して調べられる。 ただし、現実の細部まで同じ仕組みとは限らない。
- 人数と待ち時間は別。 「10人残った」だけで「10分待つ」とは分からない。
今回は、到着と対応を1分単位にまとめた簡単なモデルを使います。得られるのは、決めた条件の下での答えです。
速く焼いているのに、列が縮まらない
文化祭2日目の昼。ユウキのクラスのワッフル屋には、廊下の角を曲がるほどの行列ができました。
ハルカ「ねえ、後ろの人、帰っちゃってない?」
ユウキ「さっきより速く焼いているのに……」
Sandy「頑張ってるかどうかと、列が減るかは別や。来る人数と、対応できる人数を見よか」
現実には、注文内容、焼き加減、支払い方法、団体客など、多くの要素があります。全部を詳しく再現しようとすると、調べたい仕組みが見えにくくなることもあります。
今回は「各分の終わりに何人残るか」を調べるため、到着人数・処理能力・前の残りに注目します。

「天気はいつでも不要」と決めたわけではありません。雨で来客が変わるなら、予測の目的に応じて天気も考慮します。何を省けるかは、目的によって変わるのです。
モデルとシミュレーションはどう違う?
用語 | 意味 | ワッフル屋の例 |
|---|---|---|
モデル化 | 必要な要素と関係を選び、単純化して表すこと | 来客と処理の流れに絞る |
モデル | 単純化してできた表現 | 待ち人数を更新する式 |
数理モデル | 数学的な関係で表したモデル | 残りを足し引きする式 |
シミュレーション | モデルを使って行う模擬実験 | 到着や処理の条件を変えて10分間計算する |
モデルは調べるための仕組み、シミュレーションはそれを使って試すこと、と考えると整理できます。未来だけでなく、現在や過去の現象を再現して調べる場合もあります。
モデルの分類は、一つの順番に並べるのではなく、異なる軸から見ます。

表現に注目すれば、実物の模型のような物理モデル、図や式で表す論理モデルという分け方があります。時間的変化を扱わない静的モデルと、時間に沿った変化を扱う動的モデルという分類もあります。
偶然性を含まないのが確定モデル、確率的な要素を含むのが確率モデルです。乱数は、確率モデルをコンピュータで試す際に使える手段の一つ。乱数の命令が書かれていないだけで、確率モデルではないと決めることはできません。
今回の人数を更新する式は数理モデルで、時間ごとの変化を追うので動的です。到着を毎分3人に固定すれば確定モデル、乱数でばらつかせれば確率モデルとして扱えます。
待ち人数を更新する式と、計算のルール
待ち行列(キュー)は、サービスを待つ人や物の並びです。レジの客だけでなく、処理を待つコンピュータの仕事も対象になります。
ここからは簡単な離散時間モデルを使います。開始時の残りは0人。各分の初めにその分の客がまとめて到着し、その分の間に対応を完了すると決めます。客は途中で帰らず、対応途中の客を次の分へ持ち越さない設定です。
まず、実際の人数で考えます。前に1人残っていて、新しく3人来たなら、合計4人。最大2人対応できるなら、2人対応して2人残るという順番です。
この順番を式にします。前の残りをQ人、到着をA人、1分に対応できる上限をC人とすると、
- その分に対応する対象は Q+A人。
- 実際に処理する人数は min(Q+A, C)。
- 次の残りは Q+A−実際に処理する人数=max(0, Q+A−C)。
Q・A・Cは、いずれも0以上の整数として扱います。
minは小さい方、maxは大きい方を選ぶ意味です。

1人しかいなければ、能力が2人分あっても実際に処理するのは1人。能力をそのまま引いて「残り−1人」にしないようにします。
分 | 前の残り | 到着 | 処理能力 | 実際に処理 | 分末の残り |
|---|---|---|---|---|---|
1 | 0 | 3 | 2 | 2 | 1 |
2 | 1 | 3 | 2 | 2 | 2 |
3 | 2 | 3 | 2 | 2 | 3 |
毎分3人到着・2人処理なら、毎分1人ずつ増え、10分後は10人です。毎分の到着を先にまとめる今回のモデルと、実際の時刻ごとに客が来るモデルでは、途中の待ち方は違います。
また、これは人数の式です。誰が何分待つかを正確に調べるには、到着時刻、対応の開始時刻、順番、対応時間なども記録します。「10人残る」と「10分待つ」は同じ意味ではありません。
平均が同じでも、列ができるのはなぜ?
一定の到着・一定の処理能力で計算するなら、差を見ると変化が分かります。
- 到着が能力より多い:残りが増える。
- 到着と能力が同じ:すでにある残りは減らない。
- 到着が能力より少ない:残りがあれば減り、0より小さくはならない。
ただし、現実の到着にはばらつきがあります。平均だけから「絶対に待たない」とは判断できません。
例えば4分間に合計8人が来て、毎分最大2人対応できるとします。毎分2人の場合と、0人・0人・4人・4人の場合を比べましょう。

分末の残りを並べると、違いが見えます。
到着の仕方 | 1分目 | 2分目 | 3分目 | 4分目 |
|---|---|---|---|---|
毎分2人来る場合の残り | 0 | 0 | 0 | 0 |
0・0・4・4人と来る場合の残り | 0 | 0 | 2 | 4 |
どちらも到着は合計8人ですが、後者では最初の2分の能力が使われません。空いていた時間の処理能力を、混んだ後半へ貯金できないため、4人が残ります。
ユウキ「合計8人で、合計8人分の能力があるのに!」
Sandy「空いてた時間のレジを、あとから使うことはできへんねん」
この例は、平均が同じでも行列ができることを示しています。「ばらつきがあれば、どんなモデルでも毎分ずっと増える」という意味ではありません。到着と処理の分布、順序、相関や初期状態も影響します。
確率モデルを使うときは、1回だけで判断せず、同じ条件で複数回試して、平均・ばらつき・混雑の大きさを調べます。「各試行の最大待ち人数」と「その最大値を平均した値」も別です。試行中に観測した最大は、将来起こり得る絶対的な上限ではありません。
列を短くするには、どこを変える?
今回の式では、到着をならすことと、処理能力を増やすことが主な対策になります。
例えば、初めに3人残っていて、毎分3人来るところを毎分4人処理できれば、分末の残りは2人→1人→0人。能力を毎分3人まで増やすだけなら、残り3人は減りません。
ただし、レジだけ増やしても、ワッフルを焼く工程が追いつかなければ、全体の提供数は増やせません。このように全体の流れを制限する工程を、ボトルネックといいます。今回は何を「処理完了」とするのかを決めたうえで、そこを改善します。
番号札を配って自由に待てるようにすれば、廊下の物理的な列は短くできます。しかし、札を配るだけで作れるワッフルが増えるわけではありません。指定時刻を分けて呼ぶなど、到着を分散する仕組みと組み合わせて考えます。
途中で帰る客も調べたいなら、モデルに離脱人数を加えます。現実の改善策が2種類しかない、という話ではありません。
信号待ちの台数から、渋滞の長さを考える
次は、信号手前の1車線に注目します。最初の残りは0台、途中の合流・離脱はなく、毎分20台到着し、毎分15台まで通せるモデルです。
ここでも「次の残り=前の残り+到着−実際の通過台数」。毎分5台ずつ増えるので、10分後は50台残ります。

車長5m・車間2mを合わせて1台あたり7mを割り当てれば、列の長さは50×7=約350mと見積もれます。これは近似です。50台の先頭車の前端から最後尾車の後端までを測り、車間を49個と数えるなら、50×5+49×2=348mです。
実際には車種や車間が異なり、複数車線もあります。信号の赤・青を詳しく扱うなら、時間ごとに通過能力を変えます。「青信号で15台」と「1分あたり15台」を混ぜず、時間の単位をそろえましょう。
高速道路のサグ部で速度低下と後続のブレーキが連鎖する自然渋滞もあります。ただし、その波の伝わり方まで、今回の台数の足し引きだけで再現できるわけではありません。
試作問題とのつながりと、モデルの限界
大学入試センターの試作問題『情報Ⅰ』第2問Bでは、文化祭のクレープ販売を題材に、乱数で到着間隔を作り、待ち状況を調べています。来客10・20・30・40人の条件ごとに100回試行し、最大待ち人数の分布を読む内容もあります。
そこでは対応中の客を待ち人数に含めないなど、問題独自の定義が示されています。今回の分単位モデルの数値をそのまま当てはめず、何を待ち人数と数えるか、どんな順序で動かすかを読み取りましょう。試作問題は、本試験そのものではありません。
シミュレーションの結果は、置いた仮定の下での答えです。現実の記録と比較し、ずれた理由を調べて改善します。

Sandy「削った要素が、ほんまは大事やったかもしれへん。数字が出たら、次は現実と比べよな」
オリジナル例題:分末の残りを追おう
本記事のオリジナル学習例です。実際の共通テスト問題ではありません。
初めの残りは2人。各分の初めに1人・5人・0人・2人が順に到着し、各分に最大3人を処理します。途中離脱はありません。各分末の残りと、分末だけで見た最大人数はいくつでしょう?
解答:残りは0人・2人・0人・0人、分末の最大は2人です。
各分で同じ式を使います。
分 | 前の残り | 到着 | 実際に処理 | 分末の残り |
|---|---|---|---|---|
1 | 2 | 1 | 3 | 0 |
2 | 0 | 5 | 3 | 2 |
3 | 2 | 0 | 2 | 0 |
4 | 0 | 2 | 2 | 0 |
3分目は能力が3人分あっても、いるのは2人なので、処理も2人です。分末の残り0・2・0・0の最大は2人になります。
ただし、2分目の到着直後には5人います。「分末の最大」と「すべての時点の最大」を分けて数える必要があります。
覚えたい4つのポイント
- モデル化は、目的に合わせて要素や関係を選んで表すこと。
- 待ち人数は前の残り・到着・実際の処理数から更新し、処理能力との違いを確認する。
- 平均が同じでも、ばらつきや到着の順序によって待ちが生じる。
- 試行結果は現実と比較し、仮定とデータを見直す。
関連テーマは情報Ⅰサバイバルの記事一覧から学べます。モデルをプログラムにして試してみたい方は、プログラミングスクールSandboxもご覧ください。
参考資料
- 文部科学省「情報Ⅰ」教員研修用教材 — 第3章のモデル化とシミュレーション。
- 大学入試センター:試作問題『情報Ⅰ』(PDF) — 第2問Bのクレープ販売、到着間隔・待ち人数・複数回試行。
- NEXCO西日本:渋滞原因解説 — 上り坂・サグ部などで渋滞が発生する仕組み。