T.vs.D    <-  7  #  直接対決の残り試合数

T.vs.Rest <- 24  #  他のチームとの残り試合数
D.vs.Rest <- 28

T.won  <- 65      # これまでの勝ち数
D.won  <- 61 

T.lost <- 44      # これまでの負け数
D.lost <- 48

avr.win <- 0.5    #  今後の平均勝率(共通.引き分けはないとする)
                  #  各試合,この確率でランダムに勝ったり負けたりする.

##################
#  これから両者が T.win および D.win 試合勝ったら,
#  T の最終勝率は Dを上まわるか?

T.over.D <- function(T.win, D.win) 
{
    T.rate = (T.won + T.win) / (T.won + T.lost + T.vs.D + T.vs.Rest)
    D.rate = (D.won + D.win) / (D.won + D.lost + T.vs.D + D.vs.Rest)
    
    if (T.rate > D.rate) {
        return (T)
    } else {
        return (F)
    }
}

prob.T.beats.D <- 0  # 最終的に T の勝率が D に勝る確率の積算

for (T.win.D in 0:T.vs.D) {  # 直接対決での T の勝ち数を 0 から T.vs.D まで動かす

    p.T.D <- dbinom(T.win.D, T.vs.D, avr.win)  # 実現確率
    D.win.T <- T.vs.D  - T.win.D               # 対応する D の勝ち数

    for (T.win.Rest in 0:T.vs.Rest) {      # 他チームとの試合での T の勝ち数
        for (D.win.Rest in 0:D.vs.Rest) {  # 他チームとの試合での D の勝ち数

            if (T.over.D(T.win.D + T.win.Rest, D.win.T + D.win.Rest) == F) {
                break  #  そんなに D に勝たれたらかないません…
            }
            else {
                p <- (p.T.D *                              # 直接対決の成績の実現確率
                      dbinom(T.win.Rest, T.vs.Rest, avr.win) * # T がこれだけ勝つ確率
                      dbinom(D.win.Rest, D.vs.Rest, avr.win))  # D がこれだけ勝つ確率
                prob.T.beats.D <- prob.T.beats.D + p         #  最終的に勝る確率を増やす
            }
        }
    }
}

cat("T が D に勝る確率は ", prob.T.beats.D, "\n")