【課題】
一人一皿限定の200円,現金扱いのみの焼きそば店を開くことにした。
お客は料金を100円玉で支払うか,500円玉で支払いお釣りを100円玉で受け取るかのいずれかである。これまでの記録から,お客が100円玉で支払う確率は70%であることが分かっている。
全部で100皿を販売する計画を立てた。開店前にお釣り用の100円硬貨を何枚用意すればよいか,望ましい枚数を提案して欲しい。
お客は料金を100円玉で支払うか,500円玉で支払いお釣りを100円玉で受け取るかのいずれかである。これまでの記録から,お客が100円玉で支払う確率は70%であることが分かっている。
全部で100皿を販売する計画を立てた。開店前にお釣り用の100円硬貨を何枚用意すればよいか,望ましい枚数を提案して欲しい。
【考察】
アルゴリズムの要点
・それぞれのお客が100円硬貨で支払うか500円硬貨で支払うかは,
コンピュータで発生した 0 以上 1 未満の乱数の値により決める。
・支払いが100円硬貨のときは,100円硬貨が2枚増加する。また支払いが
500円硬貨のときは,500円硬貨が1枚増加し,100円硬貨が3枚減少する。
・100円硬貨の最小枚数は,毎回支払いが終わった時点で,そのときの枚数と
その前までの最小枚数とを比較し,より小さい方を以降の最小枚数とする。
コンピュータで発生した 0 以上 1 未満の乱数の値により決める。
・支払いが100円硬貨のときは,100円硬貨が2枚増加する。また支払いが
500円硬貨のときは,500円硬貨が1枚増加し,100円硬貨が3枚減少する。
・100円硬貨の最小枚数は,毎回支払いが終わった時点で,そのときの枚数と
その前までの最小枚数とを比較し,より小さい方を以降の最小枚数とする。
変数一覧
販売総数
支払い硬貨の決定確率
100円硬貨の枚数
500円硬貨の枚数
100円硬貨の最小枚数
お客の番号(1~sosu)
支払い硬貨の決定確率
100円硬貨の枚数
500円硬貨の枚数
100円硬貨の最小枚数
お客の番号(1~sosu)
:sosu
:kakuritsu
:coin100
:coin500
:min100
:kyaku
:kakuritsu
:coin100
:coin500
:min100
:kyaku
関数の説明
乱数() ・・・ 0 以上 1 未満のランダムな小数を返す。
例えば,x = 乱数() のとき x に 0.57309 など無作為な小数が代入される。
例えば,x = 乱数() のとき x に 0.57309 など無作為な小数が代入される。
【DNCL】
sosu = 100
kakuritsu = 0.7
coin100 = 0kakuritsu = 0.7
coin500 = 0
min100 = 300
kyaku を 1 から sosu まで 1 ずつ増やしながら繰り返す:
│ もし 乱数() < kakuritsu ならば:
│ │ coin100 = coin100 + 2
│ そうでなければ:
│ │ coin500 = coin500 + 1
│ │ coin100 = coin100 - 3
│ │ もし coin100 < min100 ならば:│ │ coin100 = coin100 - 3
│ ⎿ ⎿ min100 = coin100
⎿ 表示する("客",kyaku,":100円",coin100,":500円",coin500)
表示する("100円硬貨 最小枚数:",min100)