生活の中のシミュレーション
◆40人学級で、風邪と思われる人が5人も休んだ。
でも、個々の要因でランダムに休みが発生した場合でも
5人休むって結構あるんだろうか?
年間の出席日数が、180日として、平均1年間に12日休むとして
どうなんだろう?
シミュレーション結果:8.02%
・・・ 少ないが意外にあり得る。
■シミュレーション結果
休暇人数
0 人 | ******* | 12.61 日 | 7.01% |
1 人 | ****************** | 32.69 日 | 18.16% |
2 人 | ************************* | 45.01 日 | 25.01% |
3 人 | ********************** | 39.82 日 | 22.12% |
4 人 | ************** | 25.76 日 | 14.31% |
5 人 | ******** | 14.44 日 | 8.02% |
6 人 | *** | 6.41 日 | 3.56% |
7 人 | * | 2.29 日 | 1.27% |
8 人 | .7 日 | 0.39% | |
9 人 | .21 日 | 0.12% | |
10 人 | .05 日 | 0.03% |
!−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
RANDOMIZE
OPTION BASE
0
INPUT PROMPT "年間出席日数=":WORK_DAY
DIM NINSUU(WORK_DAY)
,DOSU_BUNPU(30),妊OSU_BUNPU(30)
INPUT PROMPT
"クラスの人数=":ALL_NINZUU
INPUT PROMPT "1人の平均的な休暇日数(年間)=":AVGQK
PRINT
""
LET SMT_N=100 !シミュレート回数
FOR L=1 TO SMT_N
CALL INIT !初期化
CALL
SMILT !シミュレーション
CALL 農SUM !度数を積算
NEXT L
CALL PRT !印刷
SUB
PRT
PRINT "休暇人数"
FOR I=0 TO 30
PRINT I;"人";
PRINT
REPEAT$("*",INT(妊OSU_BUNPU(I)/SMT_N/WORK_DAY*100)),妊OSU_BUNPU(I)/SMT_N;"日 ";
PRINT
USING "---%.##":妊OSU_BUNPU(I)/SMT_N/WORK_DAY*100;
PRINT "%"
NEXT I
END
SUB
SUB 農SUM
FOR I=0 TO 30
LET
妊OSU_BUNPU(I)=妊OSU_BUNPU(I)+ DOSU_BUNPU(I)
NEXT I
END SUB
SUB
SMILT
! 乱数を発生させて 労働日に何人休むかをシミュレーションする。
FOR I=1 TO AVGQK*ALL_NINZUU
LET
RD=MOD(INT(RND*1000000),WORK_DAY)+1
LET NINSUU(RD)=NINSUU(RD)+1
NEXT
I
FOR J=0 TO 30
FOR I=1 TO WORK_DAY
IF NINSUU(I)=J THEN LET
DOSU_BUNPU(J)=DOSU_BUNPU(J)+1
NEXT I
! PRINT J;"人休み";DOSU_BUNPU(J)
NEXT
J
END SUB
SUB INIT !配列初期化
FOR I=1 TO WORK_DAY
LET NINSUU(I)
=0
NEXT I
FOR I=0 TO 30
LET DOSU_BUNPU(I)=0
NEXT I
END
SUB
END