[NaruTo の計算機譜表工房] [NaruTo の 御家] [人間に成りたぁい]

高校入試の確率の問題に挑戦!

  1. 初めに

    平成24年度の長野県の高校入試問題の数学が難しいという評判で話題に挙がった。
    で、一通り暗算でやってみた。

    【問2】(3)の確率の問題。
    まぁ、確率は世代によって大学入試だったりもするが、
    小学校の算数で済むものなの小学生でもできるものである。

    でやってみて答え合わせ。
    ・・・②の答えがあっていない。
    あれ?答えが間違っている?いや、そうならもっと大騒ぎになっているはずだし。。。。

    ・・・・・・・・・

    あはははは。まぁ、こんな問題、にんげん様が解く必要ないや。
    計算機にやらせてばいいさ。

    あはははは・・・orz

  2. 問題を解く

    というわけで解いていきます。
    こういうのを解くには定番の Microsoft SQL Server を利用します。
    今回のバージョンは SQL Server 2008 R2 です。
    1. テーブルの用意

      問題文はリンク先の【問題2】の(3)を見てもらう。
      1~6 の番号が書かれたカードから2枚引いたときに特定の条件が成り立つ確率を求めるものである。
      ですのでまずカードのテーブルを用意する。
      
                  Create Table dbo.Cards(
                      c  integer Primary key)
                  
      続いて、1~6 までの値を設定する。
      
                  INSERT INTO dbo.Cards(c)
      	            Values
      		            (1)
      		            ,(2)
      		            ,(3)
      		            ,(4)
      		            ,(5)
      		            ,(6)
                  
    2. 全体の状態

      カードを2枚引いた場合分けは次で挙げられる。 これで View「AllCases」を用意する。
      
          CREATE VIEW AllCases AS 
          SELECT
                  Card1.c AS c1
                  , Card2.c AS c2
              FROM
                  Cards AS Card1
                  , Cards AS Card2
              WHERE
                  Card1.c <> Card2.c
              
      場合分けの数は次のようになる。
      
          SELECT
                  COUNT(*) AllCasesNum
              FROM
                  AllCases
              
      結果は
      AllCasesNum
      30
      となる。
    3. 設問①

      さて、「①2枚とも偶数で1枚だけに5以上の数値が記入している確率」 を求める。
      AllCases」に条件を追加してその場合の数を取得する。
      「両方が偶数」の条件は Microsoft SQL Server の剰余演算子「%」を用いて
      次のように書ける。
      
              (c1 % 2 = 0) AND (c2 % 2 = 0)
              
      一方「1枚だけに5以上の数値が記入している」というのは次のようになる。
      
              ((c1 >= 5) AND (c2 < 5))
              OR ((c1 < 5) AND (c2 >= 5))
              
      この条件の場合の数を次で求める。
      
      SELECT
              COUNT(*) Q1_CasesNum
          FROM
              AllCases
          WHERE
              ((c1 % 2 = 0) AND (c2 % 2 = 0))
              AND (
                  ((c1 >= 5) AND (c2 < 5))
                  OR ((c1 < 5) AND (c2 >= 5)))        
              
      結果は
      Q1_CasesNum
      4

      したがって、回答は 4/30 = 2/15 となる。
    4. 設問②

      次に、「②2枚のうち、偶数のカードの枚数を m、
      5以上の数値が記入されているカードの枚数を n とした場合の
      m > n となる確率」を求める。 Q1 と同じく「AllCases」に条件を追加してその場合の数を取得する。 まず、「2枚のうち、偶数のカードの枚数」である m は
      同じく剰余演算子「%」を利用して次のようにして求められる。
      
              (1 - c1 % 2) + (1 - c2 % 2)
              
      一方、5以上の枚数は、整数同士の除法演算が整除になることから
      
               (c1 / 5 + c2 / 5)
              
      で求められる。 したがって、各場合で m,n を求め、そのうえで m>n となる場合の数を求めるには次のようになる。
      
      SELECT
              COUNT(*) AS Q2_CasesNum
          FROM
              (
                  SELECT
                      c1, c2
                      , (1 - c1 % 2) + (1 - c2 % 2) AS m
                      , (c1 / 5 + c2 / 5) AS n
                  FROM
                      AllCases) AllCasesWithMN
          WHERE
              m > n
              
      結果は
      Q2_CasesNum
      14

      したがって、回答は 14/30 = 7/15 となる。
  3. 終わりに

    とりあえず、平成24年のエープリルフールネタ。 ですので、冒頭の話はフィクションだからねっ☆ ・・・・・orz
先頭
NaruTo の 計算機譜表工房
NaruTo の御家
人間に成りたぁい
Twitter