生活の中のシミュレーション(ビンゴの確率分布)

 市販のビンゴはどのくらいの確 率であたるものなのか?     (5 ×5マスに1〜75が書かれている場合)

  -10000000回試行の結果にて-(1000万回)
-----------------------------------------------------------------------------------------------------------------------------------------------------

 1 回目|    0 回    0 %   0 %
 2 回目|    0 回    0 %   0 %
 3 回目|    0 回    0 %   0 %
 4 回目|    22 回    .00022 %  .00022 %
 5 回目|    158 回    .00158 %  .0018 %
 6 回目|    334 回    .00334 %  .00514 %
 7 回目|    708 回    .00708 %  .01222 %
 8 回目|    1313 回    .01313 %  .02535 %
 9 回目|    2120 回    .0212 %  .04655 %
 10 回目|    3366 回    .03366 %  .08021 %
 11 回目|    4828 回    .04828 %  .12849 %
 12 回目|    7005 回    .07005 %  .19854 %
 13 回目|    9429 回    .09429 %  .29283 %
 14 回目|   ■  12772 回    .12772 %  .42055 %
 15 回目|   ■  16724 回    .16724 %  .58779 %
 16 回目|   ■  21030 回    .2103 %  .79809 %
 17 回目|   ■  26958 回    .26958 %  1.06767 %      |  100人中1人あたる
 18 回目|   ■  33150 回    .3315 %  1.39917 %
 19 回目|   ■■  40498 回    .40498 %  1.80415 %     |  50人中1人あたる
 20 回目|   ■■  48979 回    .48979 %  2.29394 %
 21 回目|   ■■  58423 回    .58423 %  2.87817 %
 22 回目|   ■■■  69264 回    .69264 %  3.57081 %
 23 回目|   ■■■  81172 回    .81172 %  4.38253 %
 24 回目|   ■■■■  94136 回    .94136 %  5.32389 %       |  20人中1人あたる
 25 回目|   ■■■■  108622 回    1.08622 %  6.41011 %
 26 回目|   ■■■■■  123168 回    1.23168 %  7.64179 %
 27 回目|   ■■■■■■  140565 回    1.40565 %  9.04744 %
 28 回目|   ■■■■■■  158187 回    1.58187 %  10.62931 %       |  10人中1人あたる
 29 回目|   ■■■■■■■  176431 回    1.76431 %  12.39362 %
 30 回目|   ■■■■■■■■  196659 回    1.96659 %  14.36021 %
 31 回目|   ■■■■■■■■■  216935 回    2.16935 %  16.52956 %
 32 回目|   ■■■■■■■■■  236330 回    2.3633 %  18.89286 %
 33 回目|   ■■■■■■■■■■  256534 回    2.56534 %  21.4582 %
 34 回目|   ■■■■■■■■■■■  277509 回    2.77509 %  24.23329 %
 35 回目|   ■■■■■■■■■■■■  296641 回    2.96641 %  27.1997 %
 36 回目|   ■■■■■■■■■■■■■  316135 回    3.16135 %  30.36105 %
 37 回目|   ■■■■■■■■■■■■■  332811 回    3.32811 %  33.68916 %       |  3 人中1人あたる
 38 回目|   ■■■■■■■■■■■■■■  349474 回    3.49474 %  37.1839 %
 39 回目|   ■■■■■■■■■■■■■■■  363405 回    3.63405 %  40.81795 %
 40 回目|   ■■■■■■■■■■■■■■■  374715 回    3.74715 %  44.5651 %
 41 回目|   ■■■■■■■■■■■■■■■  383294 回    3.83294 %  48.39804 %       |  2人中1人あたる   平均回数= 41.3634394 回    
 42 回目|   ■■■■■■■■■■■■■■■■  390295 回    3.90295 %  52.30099 %
 43 回目|   ■■■■■■■■■■■■■■■■  393572 回    3.93572 %  56.23671 %
 44 回目|   ■■■■■■■■■■■■■■■■  391812 回    3.91812 %  60.15483 %
 45 回目|   ■■■■■■■■■■■■■■■  386583 回    3.86583 %  64.02066 %
 46 回目|   ■■■■■■■■■■■■■■■  379865 回    3.79865 %  67.81931 %
 47 回目|   ■■■■■■■■■■■■■■■  367763 回    3.67763 %  71.49694 %
 48 回目|   ■■■■■■■■■■■■■■  351664 回    3.51664 %  75.01358 %
 49 回目|   ■■■■■■■■■■■■■  333225 回    3.33225 %  78.34583 %
 50 回目|   ■■■■■■■■■■■■■  312620 回    3.1262 %  81.47203 %
 51 回目|   ■■■■■■■■■■■■  288376 回    2.88376 %  84.35579 %
 52 回目|   ■■■■■■■■■■  262379 回    2.62379 %  86.97958 %
 53 回目|   ■■■■■■■■■  235798 回    2.35798 %  89.33756 %
 54 回目|   ■■■■■■■■  208911 回    2.08911 %  91.42667 %
 55 回目|   ■■■■■■■  181409 回    1.81409 %  93.24076 %
 56 回目|   ■■■■■■  154304 回    1.54304 %  94.7838 %
 57 回目|   ■■■■■  128433 回    1.28433 %  96.06813 %
 58 回目|   ■■■■  105010 回    1.0501 %  97.11823 %
 59 回目|   ■■■  83483 回    .83483 %  97.95306 %
 60 回目|   ■■■  64303 回    .64303 %  98.59609 %
 61 回目|   ■■  48181 回    .48181 %  99.0779 %
 62 回目|   ■  34314 回    .34314 %  99.42104 %
 63 回目|   ■  23578 回    .23578 %  99.65682 %
 64 回目|   ■  15449 回    .15449 %  99.81131 %
 65 回目|    9395 回    .09395 %  99.90526 %
 66 回目|    5108 回    .05108 %  99.95634 %
 67 回目|    2737 回    .02737 %  99.98371 %
 68 回目|    1133 回    .01133 %  99.99504 %
 69 回目|    377 回    .00377 %  99.99881 %
 70 回目|    107 回    .00107 %  99.99988 %
 71 回目|    12 回    .00012 %  100 %
 72 回目|    0 回    0 %  100 %
 73 回目|    0 回    0 %  100 %
 74 回目|    0 回    0 %  100 %
 75 回目|    0 回    0 %  100 %

 


! 十進BASIC

!---------------------ビンゴ  シミュレーション-----------------
RANDOMIZE
DIM BING_dat(25),BING_st(25)
DIM yok(5),tat(5)
DIM NUM_FL(75) !  1〜75  ナンバー既出かどうか
DIM cnt(1000000)
DIM DOSU_SUM(75)

LET TST=100 !  施行回数 100 〜 100000
!------------------以上初期設定-----------------------------


FOR Q=1 TO TST
   CALL CLR_JOB !初期化処理  
   !   WAIT DELAY 5
   CALL bingo1
   LET cnt(Q)=cnt0
NEXT Q

FOR  Q=1  TO TST
! PRINT Q;"人目=";cnt(Q);"回でビンゴ"
   LET SUM_cnt=cnt(Q)+SUM_cnt
NEXT Q

PRINT ""
PRINT "平均回数=";SUM_cnt/TST;"回"

FOR Q=1 TO TST
   FOR I=1 TO 75
      IF cnt(Q)=I THEN
         LET DOSU_SUM(I)=DOSU_SUM(I)+1
      END IF
   NEXT I
NEXT Q

FOR I=4 TO 75
   PRINT I;"回目で終了  ";
   PRINT REPEAT$("■",DOSU_SUM(I)*200/TST) ;DOSU_SUM(I);"回 ";DOSU_SUM(I)*100/TST;"%"
NEXT I

!----以下、サブプログラム----
SUB bingo1
   CALL  Makesheet !  ビンゴの紙を作成する   
   FOR KKK=1 TO 100
      LET cnt0=KKK
      ! PRINT KKK;"回目--------"
      CALL QUJI
      CALL Bingo_Hantei !  ビンゴ判定処理1
      CALL Bigo_end_PRT !  ビンゴ終了処理
      IF  BING_CLR=1 THEN
         EXIT FOR
      END IF
   NEXT KKK
END SUB


SUB  Bingo_Hantei  !  ビンゴの判定

   FOR L=1 TO 5 !  行状態
      LET L2=(L-1)*5
      LET yok(L)=BING_st(L2+1)+BING_st(L2+2)+BING_st(L2+3)+BING_st(L2+4)+BING_st(L2+5)
   NEXT  L
   
   FOR L=1 TO 5  !  列状態
      LET tat(L)=BING_st(L+0)+BING_st(L+5)+BING_st(L+10)+BING_st(L+15)+BING_st(L+20)
   NEXT  L
   
   !  ななめ状態
   LET nan1=BING_st(1)+BING_st(7)+BING_st(13)+BING_st(19)+BING_st(25)
   LET nan2=BING_st(5)+BING_st(9)+BING_st(13)+BING_st(17)+BING_st(21)
   
   FOR LLL=1 TO 5 !  状態判定
      IF yok(LLL)=5 OR tat(LLL)=5 OR nan1=5  OR nan2=5    THEN
         LET BING_CLR=1
      END IF
   NEXT LLL
   
END SUB

 

SUB QUJI
   DO  !  1〜75でこれまでに出ていない数字を乱数で出す
      LET lot75=MOD(INT(RND*1000000),75)+1 ! 1〜75を発生させる
   LOOP UNTIL NUM_FL(lot75)=0
   
   LET NUM_FL(lot75)=1  !出た数字は、フラグを立てる
   
   PRINT lot75;"が出た−"
   LET STRK=0
   FOR I=1 TO 25
      IF BING_dat(I)=lot75  THEN
         PRINT I;"番目のマスが当たった!"
         LET BING_st(I)=1
         LET STRK=1
      END IF
   NEXT I
   IF      STRK=0 THEN
      PRINT "--ハズレ--"
   END IF
   CALL PRT_SQ
END SUB

SUB PRT_SQ  !  状態表示
   FOR I=1 TO 25
      IF BING_st(I)=1 THEN
         PRINT "●";
      ELSE
         PRINT "□";
      END IF
      
      IF I=5 OR I=10 OR  I=15 OR I=20 OR I=25   THEN
         PRINT ""
      END IF
      IF I=25   THEN
         PRINT ""
      END IF
   NEXT I
END SUB


SUB Makesheet  !
! PRINT "□□□□□□□□  紙側データの作成  □□□□□□□□□"
 
!  <Wikipediaより>
!  なお、通常はまったくのランダムで番号が書かれているわけではなく、
!  一番左の列は1〜15の数字の中から5個選ばれている。
!  同様に、左から2列目は16〜30、中央列は31〜45、右から2列目は46〜60、
!  一番右の列は61〜75から5個ずつ(中央列のみフリースポットがあるので4個)選ばれている。
 
   FOR I=1 TO 25
      DO
         LET FL=0
         IF I=1 OR I=6 OR I=11 OR I=16 OR I=21 THEN !最左列
            LET LOTa=MOD(INT(RND*1000000),15)+1 ! 1〜15を発生させる
         END IF
         IF I=2 OR I=7 OR I=12 OR I=17 OR I=22 THEN !第2列
            LET LOTa=MOD(INT(RND*1000000),15)+1+15 ! 16〜30を発生させる
         END IF
         IF I=3 OR I=8 OR I=13 OR I=18 OR I=23 THEN !第3列
            LET LOTa=MOD(INT(RND*1000000),15)+1+30 ! 31〜45を発生させる
         END IF
         IF I=4 OR I=9 OR I=14 OR I=19 OR I=24 THEN !第4列
            LET LOTa=MOD(INT(RND*1000000),15)+1+45 ! 46〜60を発生させる
         END IF
         IF I=5 OR I=10 OR I=15 OR I=20 OR I=25 THEN !第5列
            LET LOTa=MOD(INT(RND*1000000),15)+1+60 ! 61〜75を発生させる
         END IF
         
         FOR JJJ=1 TO I-1
            IF BING_dat(JJJ)=LOTa THEN
               LET FL=1   
            END IF
         NEXT JJJ
      LOOP UNTIL FL=0  !前のデータと重複していたら再度やり直し      
      
      LET BING_dat(I)=LOTa
      
      IF I<>13  THEN
         PRINT  I;"番マス  "; BING_dat(I)
      ELSE
         LET BING_dat(13)=0  !  13番だけは、0にしておく。
         PRINT  I;"番マス  "; BING_dat(13)
      END IF
   NEXT I
   
   
   ! PRINT "□□□□□□□□□  データ作成/完了  □□□□□□□□□□"
   ! PRINT ""
END SUB


SUB  CLR_JOB
   FOR I=1 TO 75
      IF I=<25 THEN
         LET BING_dat(I)=0
         LET BING_st(I)=0
      END IF
      IF I=<5 THEN
         LET yok(I)=0
         LET tat(I)=0
      END IF
      
      LET NUM_FL(I)=0
   NEXT I
   LET BING_st(13)=1
   LET nan1=0
   LET nan2=0
   LET BING_CLR=0
   LET L2=0
   LET STRK=0
   LET lot75=0
   LET LOTa=0
END SUB

SUB Bigo_end_PRT
   IF  BING_CLR=1 THEN
      PRINT "●●●  ビンゴ!!    ビンゴ!!    ビンゴ!!  ●●●  "
   END IF
END SUB


END



Math TOP