質問<232>
「「相撲の確率」」
日付 2000/2/24
質問者 ロイ


ハサミ男という小説の中で
二子山部屋に貴乃花と若乃花、東関部屋に曙がいて、この3
力士は彼等以外の力士に必ず勝ち、互いに対戦したときの勝
率は五分五分だとすると、貴乃花あるいは若乃花が優勝する
確率はそれぞれ8分の3で、曙が優勝する確率は4分の1で
ある。
では、二子山部屋にm人の力士がおり、佐渡ヶ獄部屋にn人
の力士がいてmはnより大きいとする。これらの力士は他の
部屋の力士には必ず勝ち、互いに対戦した時の勝率は5分5
分とする。このとき、それぞれの部屋から優勝力士が出る確
立を求めよ。
という問題があったんですが、まったくもって分かりません。
気になって夜も眠れないのでご存知でしたら教えて下さい。

お返事(武田)
日付 2000/2/26
回答者 武田


二子山部屋の貴乃花と若乃花、そして東関部屋の曙の例で
考えてみると、次のようになる。

曙が優勝するのは、2人に勝ったときだから、
1 1 1
─×─=─ ……東関部屋が優勝する確率
2 2 4
二子山部屋が優勝する確率は、
  1 3
1-─=─
  4 4
貴乃花、若乃花それぞれの優勝確率は2で割って、
3   3
─÷2=─
4   8

さて、質問のことですが、
二子山部屋にm人の力士と、佐渡ヶ獄部屋にn人の力士がい
て、mはnより大きいとする場合を考えるわけだが、
普通、変数m,nがでてくるときは、数列的に変化させて様
子を見るのが得策なので、それでやってみましょう。

m=3、n=1の場合

Dが全勝するのは、3人に勝ったときだから、
1 1 1 1
─×─×─=─ ……佐渡ヶ嶽部屋が優勝する確率
2 2 2 8
二子山部屋が優勝する確率は、
  1 7
1-─=─
  8 8

m=3、n=2の場合
D、Eそれぞれが全勝するのは、3人に勝ったときだから、
1 1 1 1
─×─×─=─
2 2 2 8
D、E両方とも全勝するのは、
1 1  1
─×─=──
8 8 64
佐渡ヶ嶽部屋が優勝するのは、D∪Eの確率だから、
P(D∪E)=P(D)+P(E)-P(D∩E)
       1 1  1 15
      =─+─-──=──
       8 8 64 64
二子山部屋が優勝する確率は、
  15  49
1-───=──
  64  64

m=4、n=1の場合
Eが全勝するのは、4人に勝ったときだから、
1 1 1 1  1
─×─×─×─=── ……佐渡ヶ嶽部屋が優勝する確率
2 2 2 2 16
二子山部屋が優勝する確率は、
   1 15
1-──=──
  16 16

m=4、n=2の場合
E、Fそれぞれが全勝するのは、4人に勝ったときだから、1 1 1 1  1
─×─×─×─=──
2 2 2 2 16
E、F両方とも全勝するのは、
 1  1   1
──×──=───
16 16 256
佐渡ヶ嶽部屋が優勝するのは、E∪Fの確率だから、
P(E∪F)=P(E)+P(F)-P(E∩F)
        1  1   1  31
      =──+──-───=───
       16 16 256 256
二子山部屋が優勝する確率は、
   31 225
1-───=───
  256 256

m=4、n=3の場合
E、F、Gそれぞれが全勝するのは、4人に勝ったときだから、
1 1 1 1  1
─×─×─×─=──
2 2 2 2 16
E、F、G3人とも全勝するのは、
 1  1  1    1
──×──×──=────
16 16 16 4096
E∩F、F∩G、E∩Gの確率はそれぞれ
 1  1   1
──×──=───
16 16 256
佐渡ヶ嶽部屋が優勝するのは、E∪F∪Gの確率だから、
P(E∪F∪G)
=P(E)+P(F)+P(G)
 -P(E∩F)-P(F∩G)-P(E∩G)
 +P(E∩F∩G)
  1     1      1  721
=──×3-───×3+────=────
 16   256   4096 4096
二子山部屋が優勝する確率は、
   721 3375
1-────=────
  4096 4096

n=1のときの二子山部屋の優勝確率を数列で考えて、
(2)(3)(4)……(m)
3 7 15  2m-1
─、─、──……────
4 8 16   2m
m=4のとき、nを変化させて、
(1) (2)   (3)…………(n)
15 225 3375   24-1
──、───、────……(────)n
16 256 4096    24

したがって、
m人いる二子山部屋Pとn人いる佐渡ヶ嶽部屋Qの優勝する
確率は
   2m-1
P=(────)n ……(答)
    2m

Q=1-P
ただし、同部屋対戦はないことと、他部屋は必ず対戦するので、
1≦n<m≦15

(追伸)「全勝しないでも優勝できるかも」と言う質問があ
りましたが、同点決勝となったうえでの話なので、上の解答
にもう一つ条件を付けます。

条件「同点決勝での優勝は除く」

お返事(武田)
日付 2000/9/15
回答者 武田


上の条件の「同点決勝での優勝は除く」は止めました。そのかわり、
同点決勝のときは、その人数の割合で優勝する確率を設定しました。
例えば、A部屋の3人とB部屋の1人が、14勝1敗で同点決勝になっ
たとすると、A:B=0.75:0.25として、カウントします。

計算による確率の式化はできませんでしたが、コンピュータによる計算プ
ログラムは完成しました。
2進法を利用したプログラムなので、秋の関数協の研究大会に発表するつ
もりです。
なお、このもとになるBASICは、文教大学教育学部の白石和夫さんが
作った「(仮称)十進BASIC」です。昔のBASICと似ているので
便利に使っています。

*********************************
dim G(15,15),B(210),\(a_{v}\)ictor(15),\(b_{v}\)ictor(15)

!入力設定
DO
clear
print "相撲の確率 by T.Takeda"
input PROMPT "A部屋の関取の数 m=":m
input PROMPT "B部屋の関取の数 n=":n
if m>n and m<=15 and n>=1 then
EXIT DO
END IF
print "入力は、1≦n<m≦15の範囲にしてください!"
LOOP

!全体初期化
LET l=n*m
LET \(a_{c}\)ount=0
LET \(b_{c}\)ount=0
LET pattern=0
DO

!内部初期化
for saisyo1=1 to l
LET B(saisyo1)=0
next saisyo1
for saisyo2=1 to m
LET \(a_{v}\)ictor(saisyo2)=0
next saisyo2
for saisyo3=1 to n
LET \(b_{v}\)ictor(saisyo3)=0
next saisyo3
LET \(a_{m}\)ax=0
LET \(b_{m}\)ax=0

!2進法化
LET keisan=pattern
for henkan=1 to l
if keisa\(\frac{n}{2}\)<=0 then
LET B(henkan)=0
EXIT FOR
ELSEIF keisa\(\frac{n}{2}\)<1 then
LET B(henkan)=1
EXIT FOR
ELSE
LET B(henkan)=MOD( keisan , 2 )
LET keisan=int(keisa\(\frac{n}{2}\))
END IF
next henkan
print pattern;"→";
for hyouji=1 to l
print B(hyouji);
next hyouji
print

!行列化
for gyou=1 to n
for retu=1 to m
LET G(gyou,retu)=B((gyou-1)*m+retu)
print G(gyou,retu);
next retu
print
next gyou
print
print

!A部屋の勝敗
for rool=1 to m
for qool=1 to n
LET \(a_{v}\)ictor(rool)=\(a_{v}\)ictor(rool)+G(qool,rool)
next qool
LET \(a_{v}\)ictor(rool)=15-\(a_{v}\)ictor(rool)
print \(a_{v}\)ictor(rool);
next rool
print
print

!B部屋の勝敗
for qeel=1 to n
for reel=1 to m
LET \(b_{v}\)ictor(qeel)=\(b_{v}\)ictor(qeel)+G(qeel,reel)
next reel
LET \(b_{v}\)ictor(qeel)=15-m+\(b_{v}\)ictor(qeel)
print \(b_{v}\)ictor(qeel);
next qeel
print
print

!最大値
for raal=1 to m
LET \(a_{m}\)ax=max(\(a_{m}\)ax,\(a_{v}\)ictor(raal))
next raal
for qaal=1 to n
LET \(b_{m}\)ax=max(\(b_{m}\)ax,\(b_{v}\)ictor(qaal))
next qaal
print \(a_{m}\)ax;"勝 対 ";\(b_{m}\)ax;"勝"
print

!カウント
if \(a_{m}\)ax>\(b_{m}\)ax then
LET \(a_{c}\)ount=\(a_{c}\)ount+1
ELSEIF \(a_{m}\)ax<\(b_{m}\)ax then
LET \(b_{c}\)ount=\(b_{c}\)ount+1
ELSE
LET \(s_{c}\)ount=0
LET \(t_{c}\)ount=0
LET goukei=0
for s=1 to m
if \(a_{m}\)ax=\(a_{v}\)ictor(s) THEN
LET \(s_{c}\)ount=\(s_{c}\)ount+1
end if
next s
for t=1 to n
if \(b_{m}\)ax=\(b_{v}\)ictor(t) THEN
LET \(t_{c}\)ount=\(t_{c}\)ount+1
end if
next t
LET goukei=\(s_{c}\)ount+\(t_{c}\)ount
LET c=round(\(s_{c}\)oun\(\frac{t}{g}\)oukei,5)
LET d=round(\(t_{c}\)oun\(\frac{t}{g}\)oukei,5)
print c;d
LET \(a_{c}\)ount=\(a_{c}\)ount+c
LET \(b_{c}\)ount=\(b_{c}\)ount+d
END IF
print ;"A部屋";\(a_{c}\)ount;"B部屋";\(b_{c}\)ount
print
!繰り返し条件
LET pattern=pattern+1
IF pattern>=\(2^{l}\) then
EXIT DO
END IF
loop

!最後の表示
print
print "A部屋(";m;"人)優勝の確率";round(\(a_{c}\)ount/(\(2^{l}\)),5)*100;"%"
print "B部屋(";n;"人)優勝の確率";round(\(b_{c}\)ount/(\(2^{l}\)),5)*100;"%"
end
*********************************
なお、結果ですが、時間がかかるので、以下の例しかやっていません。

A部屋( 2 人)優勝の確率 75 %:B部屋( 1 人)優勝の確率 25 %

A部屋( 3 人)優勝の確率 87.5 %:B部屋( 1 人)優勝の確率 12.5 %

A部屋( 3 人)優勝の確率 69.531 %:B部屋( 2 人)優勝の確率 30.469 %

A部屋( 4 人)優勝の確率 93.75 %:B部屋( 1 人)優勝の確率 6.25 %

A部屋( 4 人)優勝の確率 82.578 %:B部屋( 2 人)優勝の確率 17.422 %

A部屋( 4 人)優勝の確率 67.144 %:B部屋( 3 人)優勝の確率 32.856 %