2015年9月30日水曜日

Linuxのコマンド

全然覚えられなくて泣きそうです。めっちゃ使うやつだけでも覚えたい。

  1. cd ディレクトリの変更
  2. ls ディレクトリ情報の表示
  3. mkdir ディレクトリの作成
  4. pwd カレントディレクトリの表示
  5. touch ファイルのアクセス日時と更新時刻を現在の時刻にします。ファイルが無いときは新しく作成。
CLI使えるようになりたい。

2015年7月11日土曜日

pythonの全角¥で詰まる

pythonで、文字列から円マークを消したいってことで
price = "¥1300"
price = price.strip("\\") #¥1300

っていうコードを書いてちゃんとstripしてくれないんで詰まってました.
結論:全角¥とバックスラッシュ¥は文字コードが違うから出来ません
Python source codeu"\uFFE5"
http://www.fileformat.info/info/unicode/char/ffe5/index.htm
らしいです.

ちゃんと文字コードも勉強しないと駄目みたいですね…

ちなみに文字列からある文字を消す方法にも複数あるんですね

  1. 文字列による単純な置換(str,replace(置換基,置換後)
  2. 正規表現による置換(re.sub(正規表現,置換後文字列,置換する文字列)
    ex).
    import re
    str = "Carp lose this game."
    dst = re.sub(r'[a-z]+','xxx',str) #'Cxxx xxx xxx xxx'
  3. 置き換え str.translate({ord(u'置換元'):u'置換後',…})
http://orangain.hatenablog.com/entry/20100503/1272900555
http://sucrose.hatenablog.com/entry/2013/01/10/193205

言語仕様ちゃんと覚えんとあかんっすね

2015年4月11日土曜日

バットを折りながらのホームランの力学

http://baseball.physics.illinois.edu/BrokenBatHR.html

要約
  • ・バットは剛体じゃない.歪む.なのでボールがバットに当たった瞬間にグリップに衝撃が伝わるわけじゃない.はじめはバットがたわむだけ.
  • ・バットにボールが当たった時の衝撃は、波になってグリップに伝わったあと、先端に戻る
  • ・先端に戻った時にはボールはすでにバットを離れてる
  • ・即ち、バットの衝撃に対してバッターがどれだけ力を与えてもボールにとっては関係ない.
普通に考えると「バット折りながらホームランとかどんだけ力あるんだ」ってなるけども、実際は関係ないのって面白い.力あると折れたバットは遠くには飛ぶけどね.

ちなみに自分でも力積保存を使ってインパクト時に必要なバットのしなりの力をとても大雑把に計算したところ、必要な外力がマイナスの値になってしまいました.
原因としてはホームランに必要なボールの初速を少なく見積もり過ぎていることとか、始めに与えている力積の値が大きすぎることが考えられますが、バットにあたった直後のボールの速度を多めに見積もって160km/hにしましたし、ピッチャーが投げたボールの速度を160km/h、スイングスピード150km/hと、ボールが飛んで行く方向の初期の力積の値を小さめに見積もってる(実際はピッチャーのボールは110~140km、スイングスピードは早い人で160km/h)ので、やっぱりインパクト時に外力を加える必要は無いみたいです.

2015年4月5日日曜日

順位 6 勝数 2 負数 6 引分数 0 勝率 .250 監督 緒方 孝市

いろいろ言いたいことはありますが、一つだけ言わせてください.
一番野間はやめましょう.本当に.今年だけは.やめてください.

30打席与えてフォアボールをひとつも選べない選手を一番に固定するなんて、意味不明すぎて僕の理解を超えています.選球眼が無い選手を一番に置くのは敗退行為です.正直打率が.300超えてたって微妙です.長打率が.400超えてればちょっとわかる気もしますがそれでも試合の中で一番回ってくる一番に置く理由は不明です.

百歩譲って野間を出すとしても、タイプとしてフリースインガーなのであれば、出塁率の高い丸、グスマンの後ろに置くべきです.

機動力野球とか何とか言ってますが、盗塁とヒットエンドランで点を取ったって所詮1点です.神宮で畠山の流し打ちポップフライが風に吹かれてライトスタンドインと同じ1点です.点に文脈を求めるのはわかりますが、パワプロだけにしてください.監督やるならば試合に勝つことを考えて欲しいものです.

現代野球をやってるとは思えません.以上.

2014年11月1日土曜日

得点期待値について

この間、弟と野球を見ている時にふと彼が

「俺はどうも得点期待値というものが信用ならないんだよな。あれってバッターが誰だとか、ピッチャーが誰だとか考えずに、すべての場面の平均得点を出してるんでしょ?でも現実には、打線は1~3番の上位打線のほうが出塁しやすくて、下位打線の方が出塁しにくいんだから、例えばランナー23塁のチャンスも必然的に3~5番の方が、1,2番よりも多く回数があるわけで、それを平均しちゃうってのはどうもしっくりこないんだよなぁ」

というような事を言っていまして、確かに似たような雰囲気のことは僕も思って居たのでちょっと得点期待値について考えていました。

得点期待値の計算方法はとても単純で、野球で起こりうる状態(アウトカウント、ランナーの有無での3*2^3=24通り)の場合それぞれの場面が合った時に、実際の試合でその後何点点数が入ったかを数え上げて、それを起こった回数で割るというものです。

具体的には、ある試合でワンナウトランナー13塁の場面が3回起こって、それぞれその場面の後にホームラン凡退凡退(3点)、ゲッツーで3アウト(0点)、犠牲フライ凡退(1点)となっていれば、ワンナウト13塁の得点期待値は(3+0+1)/3=1.33 となります。

これをシーズンすべての試合で計算したものが得点期待値です。

注意しなくてはいけないのは、これは実際の試合で起こったことを平均しているので、打者や投手のバラ付きが含まれているという点です。

例えば、ノーアウト満塁の場面について考えてみましょう。(ちなみにノーアウト満塁での得点期待値は2013年シーズンでは 2.201 です)
今実際の試合でノーアウト満塁の場面が訪れた時に、「この後平均で2.201点入るから、2点は硬いな」と考える人がいれば、それは微妙に間違っています。(間違っているというよりは、情報をうまく使えていない、と言う言い方が正しいでしょうか。)

何故かと言うと、先の得点期待値2.201というのは、起こったすべての場面での期待であるので、満塁になりやすい投手や打順というのが多く見積もられている、という欠点があるからです。

すなわち、満塁になりやすい打たれまくる投手や打ちまくる打線の影響が大きく、逆に打たれにくく、満塁を抱えない投手や全然打てない打線の影響が小さくなっているわけです。
ですから、「平均的な打者が平均的な投手と対戦した時に、ノーアウト満塁から2.201点入るんだ。」という認識は間違いということになります。

なので、正しく得点期待値を捉えようと思うと、「その場面を作った投手の能力分布がどうなっているかを入手して、今見ている実際の投手+打者の組み合わせだと、そのなかでどの様な場所に位置しているのかを確認した上で、その後の得点期待値を計算する」という作業が必要になります。

しかし実際には、そのデータを仕入れることも難しいですし、いちいち計算をするのも(普通にテレビで見ている中では)面倒です。
なので、簡易的に考えるとすれば、その時の打者と投手の組み合わせからこれは大方抑えられるな、という場合であれば得点期待値を低めに見積もって、逆ならば高めに見積もるといったことをする、ぐらいが限界でしょうか。

少なくとも、得点期待値を妄信して細かい数字に囚われることは、あまり意味があるとは思えないので、得点期待値はおおまかな傾向と捉えるのが良いと思います。

結局やっているのは条件付き確率の、場合分け変数が連続である場合なのですが、あまり疑わずに使っていると間違った使い方につながるので気をつけないといけませんね。

2014年10月4日土曜日

BaseBall Simulation できました。

作り始めから半年以上経ちましたが、ようやくそれっぽいものが出来ました。

BaseBall Simulation
http://coffeespecial.web.fc2.com/baseballsimulator/index.html

ずーっとC#で頑張ってましたが、C#で作ってもさくっと使えないのが残念なので、Webで動くjavascriptで作ってみました。9回延長戦なしの試合を10000試合行って、その結果を表示します。

選手データを読み込ませる方法をどうやろうか色々考えてる最中で、今はとりあえずすべてrandomにそれなりの選手を6チーム分作ってます。各チームに平均打者と平均投手、それにダルビッシュと二軍選手を混ぜてるので、ピッチャーをダルビッシュにしたらどのぐらい点数が入らなくなるか、とかやってみると面白いかもしれません。

アルゴリズムとしては、ボールに当たる、三振する、ホームランを打つ、の各OddsRatioを打者投手で計算して、起こり易さをOddsとして求めてから確率に変換するという方法を取ってます。なので投手を平均投手にすれば、打者の元能力と同じような打率、出塁率になるようになっています。

javascriptは、以前勉強しようと思った時に、あの適当な型の扱いと呪文のような

(function(x){});

が良くわからなくて挫折していたのですが、C#っぽく静的に型をつけれて、尚且つVisualStudioの補完機能を使えるTypeScriptというjavascriptのコードをコンパイルしてくれるやつを使ってなんとかかんとか再チャレンジしました。

TypeScriptはクラス、インターフェースとかもろもろのオブジェクト指向的な記述をC#と似たような形で導入できるので、プロトタイプチェーンとはなにもんじゃ、クラスがないとは何事だ!死ね! という人にも扱いやすいんじゃないかなと思います。

実際ぼくもこれを使って、javascriptじゃないみたいにjavascriptを書いていくうちに、だんだんとjavascriptの雰囲気というか、どうやって書けば良いのかをコンパイル後のjsファイルを読んだりしてみて、手を動かしながら理解できてきた気がします。しっかりjsを使いこなすためには一度はちゃんと言語仕様について勉強しないとだめなのもたしかなのですが、そればっかり先行して、まったくやる気がでないよりは、それっぽいものを書いてそれっぽく動いてくれたほうがやる気も出る(気がする)ので、オススメです。やっぱり慣れてない言語を扱うときに、IDEの補完機能があるないは全然書くスピードが違いますね。

あと、何気でVisualStudioWebのhtmlとcssの編集も、かなーり優秀で良いです。4,5年前に初めてhtmlに触った時にこれを使いたかったなって凄い思いました。やっぱり補完機能って神。

2014年8月30日土曜日

中日広島18回戦 盛大なるネタ試合

今日の試合はとんでもなく凄い試合でした.
間違いなくシーズンでもまれに見るネタ試合です.

1 2 3 4 5 6 7 8 9 10 11
広島 0 2 0 0 0 0 0 0 0 1 3 6 9 1
中日 0 0 0 0 0 0 1 1 0 1 2 5 14 1

戦評 8月29日(金)中日 vs. 広島 18回戦

広島が熱戦を制した。広島は2-2で迎えた延長10回表、松山の適時打で勝ち越す。直後に同点とされるも11回、田中の適時打などで3点を挙げ、勝ち越しに成功した。5番手で登板したミコライオが今季初勝利。敗れた中日は、終盤に粘りを見せるもあと一歩及ばなかった。
http://baseball.yahoo.co.jp/npb/game/2014082902/top

ぱっと見平凡なただの延長戦ですが内容がすさまじい

まず皮切りは7回裏の小笠原のタイムリー.思い出してますね.

その後の赤松の守備もまたすごい.

赤松はその後得点にはつながらなかったものの9回に連続盗塁も決めてます.
流石守備走塁でプロやってるだけあるな(失礼).

そしてあれよあれよと9回になり,同点で登板したのは防御率5点間近の中崎.そしてルナ森野に連続ヒットを許しノーアウト12塁の大ピンチ. 僕は完全に負けを覚悟してこの時点で見るのをやめました.しかしこの後謎の神ピッチを見せて0点に抑えました.いーやよくやったよ中崎期待してなくてごめんね.

お次は10回表,代打の天谷がスリーベースをうち,その後タイムリーが出て1点.こうなれば今年安定感抜群のミコライオが締めて終わりとおもいきや,まさかの失点で同点に.

更に11回,丸梵のヒットでワンアウト13塁のチャンスを作ると,代打赤松が広島お家芸スクイズ. がしかしピッチャー正面に転がり3塁ランナー丸は余裕でアウトのタイミングで万事休す,かとおもいきや何故かピッチャー小川が焦ったのか近距離で谷繁にトスして谷繁は取れず,オールセーフでノーアウトランナー2,3塁に.続く田中もスクイズの構えでまたしても焦ったかパスボール.赤松は3塁まで到達.結果として何もせず2点を取りました.どことなく一昨年の松山の悲劇を彷彿とさせます.

このあとしれっと田中がタイムリーを放ち一挙3点.

こうなるともう余裕だろ,となるところでカープの抑えは永川.

そんでこの永川が藤井にランナー一塁から今日2本目のホームランを浴びて1点差.しかしその後はなんとか踏ん張りカープが辛勝し,2点取られた永川にセーブがつき,セーブ失敗したミコライオに勝ちがつきました.頑張った大瀬良くん可哀想…

ありとあらゆるネタを詰め込んだような試合で,今日の観に行ってた人は相当面白かったと思います,気が気じゃないでしょうが.