- こちらのこと
- こちらにて、野球の進塁パターンを2進法で表わしている
- たとえば、は3塁と1塁にランナーがいる場合
- ここで、3塁打が出るとと上位桁に押し出される
- これはどういうことか、i-ヒットを打者がi-thベースに進塁するヒットであるとする。これは以下の2つの行為の複合であることがわかる
- それを実現するためには、すでに塁を埋めている選手をi塁分、進塁させる行為と
- 自身がi-thベースに納まる行為
- i-塁分の進塁は、2進法でいえば、倍すること。10進法でいえば、倍すること、n進法で言えば、倍すること。これは、こちらで言われている通り。
- i-thベースに納まることは、を加える行為
- ここで、n進法にした。これはどういうことか。
- 1つのベースに1人しかいられなければ2進法、2人までたまって、あふれた分が進塁するなら3進法、n-1人ためてから進塁させるならn進法。
- また、進塁させる行為と、自身が塁に出る行為とを分離すれば、送りバントやスチールも演算としてあらわせるようになる。併殺も。
- 得点は、第4以上の桁のビットの数
それは、2進法で言うところの、1000で割った商
- スリーアウトでイニングが変わるときは、下3桁を0にする:これは、下3桁での切り捨て
- 多分、以下はワークする
# ベクトルの第一スロットが1の桁であることに注意
# 0,1のベクトルを作る
# 1,2,3が1,2,3塁
a<-sample(c(0,1),7,replace=TRUE,prob=c(0.4,0.6))
a
# 塁を空にする(スリーアウト)
a[1:3]<-0
a
# 試合終了時に得点を数える
# 4以上桁を作る
c<-a[4:length(a)]
c
# cから、得点人数を出す
#これは嘘
v<-sum(c*2^(0:(length(c)-1)))
# こちらが本当
v<-sum(c)
v
b1<-c(0.1,0.2,0.3,0.3,0.1) # バッターの打率ベクトル
nb<-9 # バッター人数
batter<-matrix(rep(b1,nb),nrow=nb,byrow=TRUE) # バッターの打率行列
hit.pattern<- c(0,1,2,3,4)
size<-10000 #打席用乱数(十分数を…)
# 乱数を行ごとに発生してヒットなどの内訳を
Rands<- t(apply(batter,1,sample,x=hit.pattern,size=size,replace=T))
# Randsマトリックスの次元を確認
dim(Rands)
# batter別の 0,1,2,3,4 本数を確認
apply(Rands,1,table)