生活の中のシュミレーション
■1時間に3本程度しか来ないバス。 バスは何分待てば来るのか?
等間隔で、3本来る(0分
20分 40分)と仮定すると、
待ち時間は、下のような三角形の面積に相当する。
待ち時間は、この面積の平均値になるので、
三角形の面積÷60分=10分
答:だいたい10分待てば良い。
▼ところで、同じ3本でも、等間隔でなく 0分 10分
20分に来る場合の待ち時間の期待値は、
(1/2×10分^2+1/2×10分^2+1/2×40分^2)÷60分=15分に伸びてしまう。
のべ1000人の試行の結果 : 15.06
分
------------------------------------------------------------
!
時刻表を決めて
! 1000人の人に0〜60分の間でランダムにバス停留所にきてもらう 10進BASIC
!
その待ち時間の平均値を出す
RANDOMIZE
DO
INPUT PROMPT
"1時間に来るバス本数(1〜10本)=":N_BUS
LOOP WHILE N_BUS<1 OR
N_BUS>10
DIM JKH(N_BUS),WTT(N_BUS)
PRINT "-時刻表-"
FOR I=1 TO N_BUS
PRINT
I;"番目の時間を入れてください"
DO
INPUT PROMPT
"分単位で到着時間を入れてください(0分〜59分)=":JKH(I)
LOOP WHILE JKH(I)<0
OR JKH(I)>=60
NEXT I
!時刻表
PRINT ""
PRINT "-時刻表-"
PRINT JKH(1);"分/";
FOR
I=2 TO N_BUS
PRINT JKH(I);"分/";
NEXT I
PRINT ""
LET N=1000 !試行回数
PRINT "延べ人数=";N;"人で実験した結果"
FOR L=1 TO N
CALL RAND
CALL WATTIME
LET
SUM=WATMIN+SUM
NEXT L
PRINT "待ち時間の平均は";ROUND(SUM/N,2);"分でした"
SUB RAND
! 0.00000〜59.99999で、乱数を発生させる
LET
RD=RND*100000
LET RD=MOD(INT(RD),60)+RD-INT(RD)
! PRINT
RD;"分に到着"
END SUB
! 各データとの差を計算し最も短い結果がでたものを待ち時間とする
SUB WATTIME
FOR I=1 TO
N_BUS
LET WTT(I)=JKH(I)-RD+60
IF WTT(I)>=60 THEN
LET WTT(I)=WTT(I)-60
! PRINT JKH(I);"分に対し"
! PRINT
"待ち時間=";WTT(I)
NEXT I
LET WATMIN=60
FOR I=1 TO N_BUS
IF
WATMIN>WTT(I) THEN LET WATMIN=WTT(I)
NEXT I
! PRINT
"∴最小待ち時間=";WATMIN
END SUB
END