生活の中のシュミレーション

■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

 



 


Math TOP