カテゴリー
その他

3先なんてじゃんけんじゃん!

3先なんてじゃんけん、というのは聞いたことありませんか?例えばA級の3先はじゃんけん、とか、B級の2先はじゃんけん、とか。

じゃあ、じゃんけんってどのくらいでしょうか?例えば、A級とB級くらいの実力差があった時に8割くらい実力差で決まるセット数ってどのくらいでしょう?

これって計算すればいけそうですよね、というわけで今回の記事は超長いです。といっても、ポイントだけは先にまとめました。

まず結論からして、

A級とB級がやった時のそのセットのセット取得確率を考えてみましょう。とおもったのですが、ほどよいモデルがないですよね。すごーくざっくりとJPAの得点を基準にしてみましょうか?A級をSL8とSL9の間、B級をSL6、C級をSL3とSL4の間としてみましょう。そうすると、JPAで必要なポイントの比率をセット取得率と仮定すると、ポイントがA:B:C= 70:46:28となります。だいたい、そんなイメージですよね。

するとセット取得率がおよそ
A:C = 0.71
A:C = 0.60
B:C = 0.62
ですね。全体に低いような気がしますが(実際にはもうちょっと得セット率に差がある?)、まぁこれで見てみましょうか。

すると、得セット率が0.7,0.6くらいの実力差があるプレイヤーがn先(ハンデなし)でやった時にどのくらいだと十分に差が出るといえるでしょうか?社会科学の統計では、こういう時に99%や95%といった水準が設定されると思いますが、ビリヤードでは試合時間もあるので「8割勝てない」セット数を考えることにしましょう。

まず、A:Cくらいの実力差があった場合に8割勝てないのは3先(一番下の表でp=0.3のところをみて、total-pが0.2を下回るnの値)、A:BやB:Cくらいの実力差があった場合に8割勝てないのは9先。うーん、結構長いですね^^;;

この上の計算は、JPAの得点比が、セット取得比と仮定しているので、これが間違っているかもしれませんね。もうちょっとAとB、BとCのセット取得比が大きいような気がします。

ちなみにおなじみのFargoRate (www.fargorate.com)のレーティング差の100のゲーム取得率は1:2だそうです。ということは、およそ0.65に対応ですよね。つまり、ボーニング(rating820)とカレン・コー(rating721)がやってボーニングが8割勝つには4先。

レーティング差が50の場合のゲーム取得率はおよそ1:1.4なのでおよそ0.58。ボーニング(820)とジョニー・アーチャー(772)でボーニングが8割勝つのも9先といったところでしょうか。A級とB級の差はボーニングとアーチャー並?うーん、どうでしょう。

さて、ここからは詳細です。AがBに勝利する確率をP(A)=pとすると、

1先でAが勝利
p

2先でAが勝利 (2連勝+(2セットで1勝+1勝))
p^2 + 2C1*p*(p-1)*p

3先でAが勝利 (3-0のパターン 3連勝+(3-1のパターン:3セットで2勝+1勝)+(3-2のパターン:4セットで2勝+1勝))
p^3 + 3C2*p^2*(p-1)*p+ 4C2*p^2*(p-1)^2*p

aCb = choose(a,b)と定義すると

p^3 + choose(3,2)*p^2*(p-1)*p+ choose(4,2)*p^2*(p-1)^2*p

同様にn先ならば、

p^n + choose(n,n-1)*p^n*(p-1) + choose(n+1,n-1)*p^n*(p-1)^2 +… + choose(2n-2,n-1)*p^n*(p-1)^(n-1)

勝率xでy先で勝利する確率はRの関数で書くと以下となります。
nsaki <- function(x,y){
  result <- 0
  result <- x^y
  i <- 1
  while (i < y){
    result <- result + choose(y-1+i,y-1)*(x^y)*(1-x)^i
    i <- i+1
  }
  return (result)
}

あとは、0.1-0.5までの勝率ごとに1-10先の勝率を計算してみましょうか。かっこ悪いけど、
nsakical <- function(){
  p <- 0.1
  while (p <= 0.5){
    n <- 1
    while (n <= 13){
      ret <- nsaki(p,n)
      out<-sprintf(“p: %0.2f n:%d  total-p: %0.3f”,p,n,ret)
      print(out)
      n <- n +1
    }
    p <- p + 0.05
  }
}

これはそれぞれRのソースコードなので、実行結果は以下に。

[1] “p: 0.10 n:1  total-p: 0.100”
[1] “p: 0.10 n:2  total-p: 0.028”
[1] “p: 0.10 n:3  total-p: 0.009”
[1] “p: 0.10 n:4  total-p: 0.003”
[1] “p: 0.10 n:5  total-p: 0.001”
[1] “p: 0.10 n:6  total-p: 0.000”
[1] “p: 0.10 n:7  total-p: 0.000”
[1] “p: 0.10 n:8  total-p: 0.000”
[1] “p: 0.10 n:9  total-p: 0.000”
[1] “p: 0.10 n:10  total-p: 0.000”
[1] “p: 0.10 n:11  total-p: 0.000”
[1] “p: 0.10 n:12  total-p: 0.000”
[1] “p: 0.10 n:13  total-p: 0.000”
[1] “p: 0.15 n:1  total-p: 0.150”
[1] “p: 0.15 n:2  total-p: 0.061”
[1] “p: 0.15 n:3  total-p: 0.027”
[1] “p: 0.15 n:4  total-p: 0.012”
[1] “p: 0.15 n:5  total-p: 0.006”
[1] “p: 0.15 n:6  total-p: 0.003”
[1] “p: 0.15 n:7  total-p: 0.001”
[1] “p: 0.15 n:8  total-p: 0.001”
[1] “p: 0.15 n:9  total-p: 0.000”
[1] “p: 0.15 n:10  total-p: 0.000”
[1] “p: 0.15 n:11  total-p: 0.000”
[1] “p: 0.15 n:12  total-p: 0.000”
[1] “p: 0.15 n:13  total-p: 0.000”
[1] “p: 0.20 n:1  total-p: 0.200”
[1] “p: 0.20 n:2  total-p: 0.104”
[1] “p: 0.20 n:3  total-p: 0.058”
[1] “p: 0.20 n:4  total-p: 0.033”
[1] “p: 0.20 n:5  total-p: 0.020”
[1] “p: 0.20 n:6  total-p: 0.012”
[1] “p: 0.20 n:7  total-p: 0.007”
[1] “p: 0.20 n:8  total-p: 0.004”
[1] “p: 0.20 n:9  total-p: 0.003”
[1] “p: 0.20 n:10  total-p: 0.002”
[1] “p: 0.20 n:11  total-p: 0.001”
[1] “p: 0.20 n:12  total-p: 0.001”
[1] “p: 0.20 n:13  total-p: 0.000”
[1] “p: 0.25 n:1  total-p: 0.250”
[1] “p: 0.25 n:2  total-p: 0.156”
[1] “p: 0.25 n:3  total-p: 0.104”
[1] “p: 0.25 n:4  total-p: 0.071”
[1] “p: 0.25 n:5  total-p: 0.049”
[1] “p: 0.25 n:6  total-p: 0.034”
[1] “p: 0.25 n:7  total-p: 0.024”
[1] “p: 0.25 n:8  total-p: 0.017”
[1] “p: 0.25 n:9  total-p: 0.012”
[1] “p: 0.25 n:10  total-p: 0.009”
[1] “p: 0.25 n:11  total-p: 0.006”
[1] “p: 0.25 n:12  total-p: 0.005”
[1] “p: 0.25 n:13  total-p: 0.003”
[1] “p: 0.30 n:1  total-p: 0.300”
[1] “p: 0.30 n:2  total-p: 0.216”
[1] “p: 0.30 n:3  total-p: 0.163”
[1] “p: 0.30 n:4  total-p: 0.126”
[1] “p: 0.30 n:5  total-p: 0.099”
[1] “p: 0.30 n:6  total-p: 0.078”
[1] “p: 0.30 n:7  total-p: 0.062”
[1] “p: 0.30 n:8  total-p: 0.050”
[1] “p: 0.30 n:9  total-p: 0.040”
[1] “p: 0.30 n:10  total-p: 0.033”
[1] “p: 0.30 n:11  total-p: 0.026”
[1] “p: 0.30 n:12  total-p: 0.021”
[1] “p: 0.30 n:13  total-p: 0.017”
[1] “p: 0.35 n:1  total-p: 0.350”
[1] “p: 0.35 n:2  total-p: 0.282”
[1] “p: 0.35 n:3  total-p: 0.235”
[1] “p: 0.35 n:4  total-p: 0.200”
[1] “p: 0.35 n:5  total-p: 0.172”
[1] “p: 0.35 n:6  total-p: 0.149”
[1] “p: 0.35 n:7  total-p: 0.129”
[1] “p: 0.35 n:8  total-p: 0.113”
[1] “p: 0.35 n:9  total-p: 0.099”
[1] “p: 0.35 n:10  total-p: 0.087”
[1] “p: 0.35 n:11  total-p: 0.077”
[1] “p: 0.35 n:12  total-p: 0.068”
[1] “p: 0.35 n:13  total-p: 0.060”
[1] “p: 0.40 n:1  total-p: 0.400”
[1] “p: 0.40 n:2  total-p: 0.352”
[1] “p: 0.40 n:3  total-p: 0.317”
[1] “p: 0.40 n:4  total-p: 0.290”
[1] “p: 0.40 n:5  total-p: 0.267”
[1] “p: 0.40 n:6  total-p: 0.247”
[1] “p: 0.40 n:7  total-p: 0.229”
[1] “p: 0.40 n:8  total-p: 0.213”
[1] “p: 0.40 n:9  total-p: 0.199”
[1] “p: 0.40 n:10  total-p: 0.186”
[1] “p: 0.40 n:11  total-p: 0.174”
[1] “p: 0.40 n:12  total-p: 0.164”
[1] “p: 0.40 n:13  total-p: 0.154”
[1] “p: 0.45 n:1  total-p: 0.450”
[1] “p: 0.45 n:2  total-p: 0.425”
[1] “p: 0.45 n:3  total-p: 0.407”
[1] “p: 0.45 n:4  total-p: 0.392”
[1] “p: 0.45 n:5  total-p: 0.379”
[1] “p: 0.45 n:6  total-p: 0.367”
[1] “p: 0.45 n:7  total-p: 0.356”
[1] “p: 0.45 n:8  total-p: 0.346”
[1] “p: 0.45 n:9  total-p: 0.337”
[1] “p: 0.45 n:10  total-p: 0.329”
[1] “p: 0.45 n:11  total-p: 0.321”
[1] “p: 0.45 n:12  total-p: 0.313”
[1] “p: 0.45 n:13  total-p: 0.306”

例えば0.55:0.45という、比較的近い実力の場合、9先で0.337が13先で0.306とそれほど変わらないわけですよね。5先は運で9先は実力か、っていうと、上手いほうが62%勝つのか上手いほうが66%勝つのかって差なわけです。

実力差が0.6:0.4という比較的大きい場合だと、5先が73%、9先が80%ですからねー。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です