2015年04月29日
昭和の日
今日は「昭和の日」です。
なにか懐かしいものがないか探してみたら、こんなものが出てきました。
Game Watch の JUDGE というゲームです。札の数字の大小をみて叩くか逃げるか瞬時に判断するというもの。昔、熱中して遊んだ記憶があります。この他に、FIRE というゲームも持っていました。確か、これもどこかにしまってあったと思います。初めて買ったゲームはこのシリーズだったんじゃないかと記憶しています。
部屋の中を見渡すと、昭和の時代からあったものはほとんどなくなってしまいました。たいてい、物置きや机の引き出しの中にしまってあります。そう思うと少し寂しい気も。昭和の匂いのするようなものを飾っておきたくなりました。
なにか懐かしいものがないか探してみたら、こんなものが出てきました。
Game Watch の JUDGE というゲームです。札の数字の大小をみて叩くか逃げるか瞬時に判断するというもの。昔、熱中して遊んだ記憶があります。この他に、FIRE というゲームも持っていました。確か、これもどこかにしまってあったと思います。初めて買ったゲームはこのシリーズだったんじゃないかと記憶しています。
部屋の中を見渡すと、昭和の時代からあったものはほとんどなくなってしまいました。たいてい、物置きや机の引き出しの中にしまってあります。そう思うと少し寂しい気も。昭和の匂いのするようなものを飾っておきたくなりました。
2015年04月26日
ゴールデン・ウィーク
すでに大型連休に入った方もいらっしゃると思います。
今週は火曜日まで出勤ですが、自分の会社でも休暇を取る人が多いみたいです。連休明けも後半の二日だけなので、ここも休暇にすれば連休が二週間になるというのはなかなか魅力的ですね。
連休中の予定は今のところ名古屋ボストン美術館の「華麗なるジャポニスム展」を見に行くことくらいで、あとは何も考えていません。ギリギリになってどうしようかと考えるだけで連休が終わってしまうというのがいつものパターンなので、一日くらいはちゃんと計画立てて出掛けたいものです。
今週は火曜日まで出勤ですが、自分の会社でも休暇を取る人が多いみたいです。連休明けも後半の二日だけなので、ここも休暇にすれば連休が二週間になるというのはなかなか魅力的ですね。
連休中の予定は今のところ名古屋ボストン美術館の「華麗なるジャポニスム展」を見に行くことくらいで、あとは何も考えていません。ギリギリになってどうしようかと考えるだけで連休が終わってしまうというのがいつものパターンなので、一日くらいはちゃんと計画立てて出掛けたいものです。
2015年04月19日
明日は雨のようです
現在、確率・統計用サンプル・プログラムの大幅な見直し中です。
次は「生存時間解析」を新しいテーマとして公開する予定ですが、その前に今までのサンプル・プログラムを見直しておかないと、あまりにもゴチャゴチャになりすぎて収集がつかなくなると思い着手し始めてからだいぶ経ちます。ようやく 1 / 3 程度が完了したところで、まだ先は長いです。一応、整理が済んだら公開をしようと考えています。
久しぶりの数学問題。今回は名古屋大の入試問題です。
-----
サイコロを投げると 1 から 6 までの整数の目が等しい確率で出るとする。サイコロを n 回 ( n = 1, 2, 3, ... ) 投げるとき、出る目の積の 1 の位が j ( j = 0, 1, 2, ... ,9 ) となる確率を P_n(j) とする。(中略) 4) P_n(5) を求めよ。( 09 名古屋・理 )
まず、積の 1 の位が奇数であるためには、出た目の数が全て奇数である必要があるため、一つでも偶数の目が出る場合は全て除外することができます。n - 1 回の試行で 1 の位が奇数であった時、n 回目の試行によって 1 の位が 5 になるためには、n 回目に 5 が出るか、または n - 1 回目で 1 の位が 5 であった場合に限られます。n 回目で 1 の位が奇数となる場合の数は、n = 1 のとき { 1, 3, 5 } で 3 通りであり、n = 2 のとき、各場合に対して奇数の目が出る場合の数はそれぞれ 3 ( 例えば 1 に対して { 1, 1 } { 1, 3 } { 1, 5 } ) なので、32 となります。この操作を繰り返すと、n のときは 3n 通りの場合があることになります。
n - 1 回目では、積の 1 の位が奇数になる場合が 3n-1 通りあり、5 になる場合の数を F_n-1(5) で表すと、n 回目の試行では奇数の時に 5 が出る 3n-1 通りと、5 の時に奇数が出る 3 * F_n-1(5) 通りの場合に 1 の位が 5 になります。しかし、奇数の場合の中には 5 が含まれ、n - 1 回目の時に 1 の位が 5 で、n 回目も 5 が出た場合は重複して数えているため、その場合の数 F_n-1(5) を差し引く必要があります。これらの結果から
F_n(5) = 3n-1 + 3F_n-1(5) - F_n-1(5) = 2F_n-1(5) + 3n-1
という漸化式が得られます。
F_n(5) - 2F_n-1(5) = 3n-1
より
F_n(5) - 2F_n-1(5) = 3n-1
2F_n-1(5) - 22F_n-2(5) = 2・3n-2
22F_n-2(5) - 23F_n-3(5) = 22・3n-3
:
2n-2F_2(5) - 2n-1F_1(5) = 2n-2・3
となるので、辺々加えると
F_n(5) - 2n-1F_1(5) = 3n-1 + 2・3n-2 + 22・3n-3 + ... + 2n-2・3
となります。右辺については
S = 3n-1 + 2・3n-2 + 22・3n-3 + ... + 2n-3・32 + 2n-2・3
とすると
( 2 / 3 )S = 2・3n-2 + 22・3n-3 + 23・3n-4 + ... + 2n-2・3 + 2n-1
なので、辺々差し引くと
( 1 - 2 / 3 )S = 3n-1 - 2n-1
より
S = 3n - 3・2n-1
となります。また、F_1(5) = 1 なので、
F_n(5) = 3n - 3・2n-1 - 2n-1 = 3n - 2n
という結果が得られます。最後に、n 回目の試行で出る目の組み合わせは 6n 通りあるので、
P_n(5) = ( 3n - 2n ) / 6n
となります。
例によって、合っている保証はありません。
それから、5 以外の場合も求めることができるのかというのも気になるところです。時間があればチャレンジしてみたいですね。
次は「生存時間解析」を新しいテーマとして公開する予定ですが、その前に今までのサンプル・プログラムを見直しておかないと、あまりにもゴチャゴチャになりすぎて収集がつかなくなると思い着手し始めてからだいぶ経ちます。ようやく 1 / 3 程度が完了したところで、まだ先は長いです。一応、整理が済んだら公開をしようと考えています。
久しぶりの数学問題。今回は名古屋大の入試問題です。
-----
サイコロを投げると 1 から 6 までの整数の目が等しい確率で出るとする。サイコロを n 回 ( n = 1, 2, 3, ... ) 投げるとき、出る目の積の 1 の位が j ( j = 0, 1, 2, ... ,9 ) となる確率を P_n(j) とする。(中略) 4) P_n(5) を求めよ。( 09 名古屋・理 )
まず、積の 1 の位が奇数であるためには、出た目の数が全て奇数である必要があるため、一つでも偶数の目が出る場合は全て除外することができます。n - 1 回の試行で 1 の位が奇数であった時、n 回目の試行によって 1 の位が 5 になるためには、n 回目に 5 が出るか、または n - 1 回目で 1 の位が 5 であった場合に限られます。n 回目で 1 の位が奇数となる場合の数は、n = 1 のとき { 1, 3, 5 } で 3 通りであり、n = 2 のとき、各場合に対して奇数の目が出る場合の数はそれぞれ 3 ( 例えば 1 に対して { 1, 1 } { 1, 3 } { 1, 5 } ) なので、32 となります。この操作を繰り返すと、n のときは 3n 通りの場合があることになります。
n - 1 回目では、積の 1 の位が奇数になる場合が 3n-1 通りあり、5 になる場合の数を F_n-1(5) で表すと、n 回目の試行では奇数の時に 5 が出る 3n-1 通りと、5 の時に奇数が出る 3 * F_n-1(5) 通りの場合に 1 の位が 5 になります。しかし、奇数の場合の中には 5 が含まれ、n - 1 回目の時に 1 の位が 5 で、n 回目も 5 が出た場合は重複して数えているため、その場合の数 F_n-1(5) を差し引く必要があります。これらの結果から
F_n(5) = 3n-1 + 3F_n-1(5) - F_n-1(5) = 2F_n-1(5) + 3n-1
という漸化式が得られます。
F_n(5) - 2F_n-1(5) = 3n-1
より
F_n(5) - 2F_n-1(5) = 3n-1
2F_n-1(5) - 22F_n-2(5) = 2・3n-2
22F_n-2(5) - 23F_n-3(5) = 22・3n-3
:
2n-2F_2(5) - 2n-1F_1(5) = 2n-2・3
となるので、辺々加えると
F_n(5) - 2n-1F_1(5) = 3n-1 + 2・3n-2 + 22・3n-3 + ... + 2n-2・3
となります。右辺については
S = 3n-1 + 2・3n-2 + 22・3n-3 + ... + 2n-3・32 + 2n-2・3
とすると
( 2 / 3 )S = 2・3n-2 + 22・3n-3 + 23・3n-4 + ... + 2n-2・3 + 2n-1
なので、辺々差し引くと
( 1 - 2 / 3 )S = 3n-1 - 2n-1
より
S = 3n - 3・2n-1
となります。また、F_1(5) = 1 なので、
F_n(5) = 3n - 3・2n-1 - 2n-1 = 3n - 2n
という結果が得られます。最後に、n 回目の試行で出る目の組み合わせは 6n 通りあるので、
P_n(5) = ( 3n - 2n ) / 6n
となります。
例によって、合っている保証はありません。
それから、5 以外の場合も求めることができるのかというのも気になるところです。時間があればチャレンジしてみたいですね。
2015年04月18日
二度目の台湾
二回目の台湾は前回とほとんど大差ないスケジュールでした。
予想より暑さも大したことはなく、二日とも晴れていたので旅行には申し分ない日和でした。残念ながら、到着してすぐに会議が始まって、翌日の午前中までは室内にこもっていたわけですが。
感想としては、
・相変わらずスクーターが多いです。
・ホテルの部屋がアップグレードしていました。うれしい。
・昼食の弁当が餃子とスープのみで、ご飯ものがなかったのに驚きました。
・帰りの飛行機の離陸が少し遅れて、その理由が「小さな部品の取り付けに時間がかかった」というのに多少の不安を感じました。
今回は両替したお金が少なかったので、土産は大したものは買えませんでした。カード使えばいいんでしょうけど、そこまでして買う必要もない気がしたので。さらに、カメラは前回よりも使う機会がなく、少々残念。もっといろんなところを見ることができればいいんですけどね。
予想より暑さも大したことはなく、二日とも晴れていたので旅行には申し分ない日和でした。残念ながら、到着してすぐに会議が始まって、翌日の午前中までは室内にこもっていたわけですが。
感想としては、
・相変わらずスクーターが多いです。
・ホテルの部屋がアップグレードしていました。うれしい。
・昼食の弁当が餃子とスープのみで、ご飯ものがなかったのに驚きました。
・帰りの飛行機の離陸が少し遅れて、その理由が「小さな部品の取り付けに時間がかかった」というのに多少の不安を感じました。
今回は両替したお金が少なかったので、土産は大したものは買えませんでした。カード使えばいいんでしょうけど、そこまでして買う必要もない気がしたので。さらに、カメラは前回よりも使う機会がなく、少々残念。もっといろんなところを見ることができればいいんですけどね。
2015年04月12日
台湾再び
明日から出張で台湾に行きます。今回が二度目の台湾。
また一泊のみの滞在で、明日の昼と午前中に打ち合わせをしてそのまま帰国という流れなので、今回も観光などは皆無。まあ、仕事だから仕方がないことではあります。前回の出張ではあまり写真撮影できなかったので、今回はフル活用したいものです。それから、マンゴーとパイナップルのビール、おそらく再チャレンジします。
台湾というとすでに暑いくらいかとイメージしていましたが、調べてみたら 20 度くらいなのでそれほどでもなさそうです。今日は雨だったようですが、明日は晴れてくれるみたいですね。代わりにこちらは雨のようですが ...
また一泊のみの滞在で、明日の昼と午前中に打ち合わせをしてそのまま帰国という流れなので、今回も観光などは皆無。まあ、仕事だから仕方がないことではあります。前回の出張ではあまり写真撮影できなかったので、今回はフル活用したいものです。それから、マンゴーとパイナップルのビール、おそらく再チャレンジします。
台湾というとすでに暑いくらいかとイメージしていましたが、調べてみたら 20 度くらいなのでそれほどでもなさそうです。今日は雨だったようですが、明日は晴れてくれるみたいですね。代わりにこちらは雨のようですが ...
2015年04月07日
テンプレート
以前はほどほどに利用していた C++ のテンプレートですが、いろんなことができることがわかってきて最近は頻繁に使うようになりました。
よくサンプルにあるのはこういうものです。
template<typename T> T max( T x, T y )
{
return( ( x < y ) ? y : x );
}
型 T がテンプレート引数で、これを任意の型にすることができます。
double d = max<double>( 0.5, 0.7 ); // double用
int d = max<int>( 16, 10 ); // int用
関数の中では "<" を使って二つの値を比較しています。この演算ができなければコンパイル時にエラーになります。逆に言えば、関数内にある演算や他の関数が利用できる型ならちゃんとコンパイルできるので、普通の組み込み型ではなく任意のクラスなどもテンプレート引数にしてしまうことができます。派生クラスによるポリモーフィズムは動的に変化するのに対し、コンパイル時に型が変化するので静的なポリモーフィズムと言えます。STL はテンプレートを多用しているので、STL をうまく組み合わせるといろんなことが実現できます。これがなかなかおもしろくて、最近ハマっています。
残念なのが、コンパイル時のエラーがわかりづらいこと。慣れないと対処法がわからず、慣れてきても原因がわかりにくいことが多々あります。テンプレートを利用できるのは C++ と D 言語くらいだそうで、D 言語は少し興味があるんですよね。機会があれば勉強したいところですけどね。
よくサンプルにあるのはこういうものです。
template<typename T> T max( T x, T y )
{
return( ( x < y ) ? y : x );
}
型 T がテンプレート引数で、これを任意の型にすることができます。
double d = max<double>( 0.5, 0.7 ); // double用
int d = max<int>( 16, 10 ); // int用
関数の中では "<" を使って二つの値を比較しています。この演算ができなければコンパイル時にエラーになります。逆に言えば、関数内にある演算や他の関数が利用できる型ならちゃんとコンパイルできるので、普通の組み込み型ではなく任意のクラスなどもテンプレート引数にしてしまうことができます。派生クラスによるポリモーフィズムは動的に変化するのに対し、コンパイル時に型が変化するので静的なポリモーフィズムと言えます。STL はテンプレートを多用しているので、STL をうまく組み合わせるといろんなことが実現できます。これがなかなかおもしろくて、最近ハマっています。
残念なのが、コンパイル時のエラーがわかりづらいこと。慣れないと対処法がわからず、慣れてきても原因がわかりにくいことが多々あります。テンプレートを利用できるのは C++ と D 言語くらいだそうで、D 言語は少し興味があるんですよね。機会があれば勉強したいところですけどね。
2015年04月05日
桜と皆既月食
昨夜は皆既月食だったのですが、曇り空だったので見るのはあきらめてました。
ニュースなんかで映像は見られたので、まあそれで満足していたわけですが、桜の咲く時期に皆既月食が見られるのが 2030 年代らしいので、少々残念な気分でもあります。
現在、過去に作ってきた確率・統計関連のプログラムを整理しています。これらもそのうち公開したいと思っていますが、あまり時間が取れない上に予想以上に手こずっていて、いつ公開できるかは未知数です。また新しいテーマで「アルゴリズムのコーナー」も更新したいものの、こちらもなかなか進みが悪いです。
特にノルマがあるわけではなく、一つずつ片付けていければいいんですけど、もっと効率よく進める方法とかはないんでしょうかね。その前に、集中力を付ける努力も必要かも。
ニュースなんかで映像は見られたので、まあそれで満足していたわけですが、桜の咲く時期に皆既月食が見られるのが 2030 年代らしいので、少々残念な気分でもあります。
現在、過去に作ってきた確率・統計関連のプログラムを整理しています。これらもそのうち公開したいと思っていますが、あまり時間が取れない上に予想以上に手こずっていて、いつ公開できるかは未知数です。また新しいテーマで「アルゴリズムのコーナー」も更新したいものの、こちらもなかなか進みが悪いです。
特にノルマがあるわけではなく、一つずつ片付けていければいいんですけど、もっと効率よく進める方法とかはないんでしょうかね。その前に、集中力を付ける努力も必要かも。