平成17年3月27日
[流れ星]
第152回数学的な応募問題解答
<解答募集期間:3月6日〜3月27日
[1位のチーム数の期待値]
皆さんは、京都大学の入試問題の過去問です。興味があったので出題します。
NO1「H7K」
3/06: 13時53分受信 更新3/26
試合数の合計は4*3/2=6.
よって,全体の場合の数は2^6=64通り.各場合が起こる確率は等しい.
4チームP, W, B, Gの勝数をそれぞれp, q, r, sとする.
以降,場合分けはp>=q>=r>=sで考える.
また,A-Bで「チームAとBが対戦し,Aが勝った」と書くことにする.
i) 1位の勝数が3のとき
a. 3,3,0,0:P-Wで両方とも勝利していることとなる.×
b. 3,2,1,0:P-W, P-B, P-G, W-B, W-G, B-Gならばよい.
c. 3,1,1,1:
P-W, P-B, P-G, W-B, B-G, G-W,または
P-W, P-B, P-G, W-G, B-W, G-B,ならよい.
ii) 1位のチームの勝数が2のとき
a. 2,2,2,0:
P-G, W-G, B-Gは確定.残り3試合について
P-W, W-B, B-PかP-B, W-P, B-Wであればよい.
b. 2,2,1,1:
b-1:P-W, P-B, G-Pのとき:W-B, W-G, B-G.
b-2:P-W, B-P, P-Gのとき:G-B, W-B, W-G.
b-3:W-P, P-B, P-Gのとき:2通り.
iii) 1位のチームの勝数が1 or 0
こんなことはない.
したがって,それぞれの場合のようになる確率は
ii-b: 4!/64=24/64=3/8
ii-c: 4*2/64=1/8
ii-a: 4*2/8=1/8
ii-b: (4*3/2)*(1+1+2)/64=3/8
であるから,
求める期待値は
3/8*1+1/8*1+1/8*3+3/8*2=13/8.
NO2「中川幸一」3/06:
22時45分受信 更新3/26
「解答」です。
NO3「cbc」 3/07: 23時20分受信 更新3/26
NO4「Toru」 3/08: 13時38分受信 更新3/26
試合数は4C2=6試合。勝敗の組み合わせは2^6=64通りで、これを1位となるチー
ム数によって場合わけをする。
1)1位が1チームのみの時
1チームが3勝0敗となる時で、4チームに可能性があり、それぞれ1位チーム以外
のチーム同士の3試合は勝ち負け自由だから、4x2^3=32通り
2)1位が3チームの時
2勝1敗が3チーム 0勝3敗が1チーム 0勝3敗のチームの選び方が4通り、残
り3チーム間の試合は三つ巴でみんな1勝1敗となるので、どちらに勝つかで2通り。
よって4x2=8通り
3)1位が2チームの時
2勝1敗が2チーム1勝2敗が2チームであるが、4チームとも1位はあり得ないの
で、これは残りで64-32-8=24通り
よって求める期待値は(1x32/64)+(2x24/64)+(3x8/64)=13/8 ――――答え
NO5「浜田明巳」3/11:
17時49分受信 更新3/26
エクセルのマクロを使い,すべての場合の勝ち負けを表示します.条件から,すべて同程度に起きると考えられるので,そのまま1位のチーム数の平均を計算します.答は13/8です.
このマクロはチーム数を変える事が出来ます.ただし6以上にすると,きついです.セル上に表示させないようにすれば,大丈夫でしょう.
Option Explicit
Const TEAM As Integer = 4 'チーム数
Public WA As Long
Sub Macro1()
Sheets("Sheet1").Select
Cells(1, 1).Value = 0 '対戦カード数
Range("A1").Select
Dim j1 As Integer
Dim j2 As Integer
For j1 = 1 To TEAM - 1
For j2 = j1 + 1 To TEAM
Cells(1, 1).Value = Cells(1,
1).Value + 1
Cells(Cells(1, 1).Value, 2).Value =
j1
Cells(Cells(1, 1).Value, 3).Value =
j2
Next j2
Next j1
'
Cells(1, 5).Value = 0 '勝敗のパターン数
Range("E1").Select
Dim a(TEAM * (TEAM - 1) / 2) As Integer 'a(n)=0:番号の若いチームの勝利,
a(n)=1:番号の大きいチームの勝利
WA = 0
Call saiki(1, a())
'
Dim g As Long
g = GCM(WA, Cells(1, 5).Value)
Cells(2, 5).Value = Str(WA / g) +
"/" + Str(Cells(1, 5).Value / g)
Range("E2").Select
End Sub
Sub saiki(ByVal n As
Integer, ByRef a() As Integer)
a(n) = 0
While a(n) <= 1
If n < Cells(1, 1).Value Then
Call saiki(n
+ 1, a())
Else
Call hyouji(a())
End If
a(n) = a(n) + 1
Wend
End Sub
Sub hyouji(ByRef a() As
Integer) '勝利チームの表示
Dim b(2 ^ (TEAM * (TEAM - 1) / 2) + 1) As Integer
Dim max As Integer
Dim winner As Integer '優勝チーム数
Dim j As Integer
For j = 1 To Cells(1, 1).Value
b(j) = 0
Next j
Cells(1, 5).Value = Cells(1, 5).Value + 1
For j = 1 To Cells(1, 1).Value
If a(j) = 0 Then
Cells(Cells(1, 5).Value, j +
5).Value = Cells(j, 2).Value
Else
Cells(Cells(1, 5).Value, j +
5).Value = Cells(j, 3).Value
End If
b(Cells(Cells(1, 5).Value, j + 5).Value) =
b(Cells(Cells(1, 5).Value, j + 5).Value) + 1
Next j
max = -1
For j = 1 To Cells(1, 1).Value
If max < b(j) Then
max = b(j)
winner = 1
ElseIf max = b(j) Then
winner = winner + 1
End If
Next j
Cells(Cells(1, 5).Value, Cells(1, 1).Value + 6).Value =
winner
WA = WA + winner
End Sub
Private Function GCM(ByVal a As Long, ByVal b As Long) As Long
If b = 0 Then
GCM = a
Else
GCM = GCM(b, a Mod b)
End If
End Function
NO6「ice」 3/14: 21時04分受信 更新3/26
NO7「kasama」 3/22: 18時16分受信 更新3/26
さて、今回は確率の問題ですね。『確率は場合分けが正解への鍵』とよく聞きます。模範解答などをみると『あぁ、なるほど』と納得できるのですが、自分でやると、なかなかスッキリした形に整理するのは難しいものですね。
引分けがないので、1位チーム数は1、2、3の何れかと考えられます。単純にケースを数え上げてもよいのですが、勝敗を有向グラフで表すと少しわかり易いです。便宜上、4チームの名前をそれぞれA、B、C、Dとします。チームのノード、勝敗を枝と考え、例えばAがBに勝った場合は
と表現します。この表記方法を利用して以下のように数え上げました。
【数上げ】
@1位チーム数=1
Aが1位であったとすると、ノードAから他のノードへの枝の向きが確定します。
すると、残りの3本の枝の向きは任意なので、ケース数は23通りです。そして、他のチームが1位である可能性を考慮すると、4×23=32 通りです。
A1位チーム数=3
A、B、Cが1位であったとすると、Dは全敗なので、他のノードからDへの枝の向きが確定します。このとき、他のチームは2勝1敗なので、ケース数は以下の2通りです。
他のチームが全敗であるかもしれないので、4×2=8通りです。
B1位チーム数=2
余事象を考えて、26-(32+8)=24通りです。
【期待値の計算】
@、A、Bより1位チーム数の期待値は
1×32/26 + 2×24/26 + 3×8/26 = 13/8
です。