2007-01-01から1年間の記事一覧

ジャンケンで決着がつくまでの回数(6)

平均と分散を求めたので、 今度は正確な分布を求めよう。 n人でm回かかる確率をp(n,m)とすると、 1回で1人になる場合、2人になる場合、…をたし合わせて、 p(n,m) = P(n,1)p(1,m-1) + ... + P(n,n)p(n,m-1) (m > 1) p(n,1) = P(n,1) ここで、P(k,l)はk人から1…

ジャンケンで決着がつくまでの回数(5)

分散も同じように求めることを考えよう。 事象iがpiで起こるとして、 その事象が起こったときの平均と分散が、 mi, σi2だとしたときに、 全体での平均と分散を考える。 ni : 事象iの全体の個数 とすると、全体では、 だから、平均は、 分散を同様に考える。 …

ジャンケンで決着がつくまでの回数(4)

前回の、 (P(n, 1) + ... + P(n, n-1))E(n) = 1 + P(n, 1)E(n) + ... + P(n, n-1)E(n-1) にしたがってプログラムを書くと、 E(2) = 1.5 E(3) = 2.2500000000000004 E(4) = 3.214285714285715 E(5) = 4.485714285714287 E(6) = 6.219815668202768 E(7) = 8.64…

ジャンケンで決着がつくまでの回数(3)

代数的に期待値を求めよう。 n人でジャンケンして決着がつくまでの回数の期待値をE(n)とする。 2人の場合、 どちらかが勝つ確率が2/3、あいこの確率が1/3だから、 1回で決着がつく確率は2/3、 2回で決着がつく確率は1/3 * 2/3 = 2/9、 3回で決着がつく確率は…

ジャンケンで決着がつくまでの回数(2)

ジャンケンを2〜10人で1万回を行う。 決着がつくまでにかかった回数の平均と標準偏差は次のようになった。9人を超えるあたりから急激に増えるようだ。 以下、ソース。

ジャンケンで決着がつくまでの回数(1)

例えば、10人でジャンケンしたら、何回で1人が残るだろうか。 まず、ジャンケンをシミュレートしてみよう。 グーを1、チョキを2、パーを4とする。 すなわちビットを立てる。 乱数を使いJavaScriptでこんな具合に実装する。 // 2.8s for(var i = 0; i var a; …

酷勤務とパワハラでうつ病になったデンソー社員、トヨタを訴える 「死んでからでは取り返しがつかない」

http://www.mynewsjapan.com/kobetsu.jsp?sn=693 コモンレールの開発でこき使われて病気になった人の話。 「予定表を見ると全体が見えるのですが、逆にこれがプレッシャーになる」

明日選挙

誰に入れていいのか全然分からないので、 図書館に行って新聞を読んだ。 その行く途中で明日が投票日だということに気がついた。 全然知らなかった。 月曜の中日新聞を読んだ。 こりゃ、分かりやすい。 落としたいのが一目瞭然だ。 朝のうちに行っておこう。…

1500

5分24秒。 久しぶりに走ってみたら、自己記録が出た。 なんと、この距離をまじめに走ったのは4週ぶりだった。

東京(2)

池袋 15:39 〜 15:44 新宿 湘南新宿ライン あとはこの間と同じ。 「あからさまな手抜きですねえ」

東京(1)

刈谷 8:54 〜 9:29 豊橋 豊橋 9:32 〜 10:06 浜松 浜松 10:11 〜 11:08 西焼津 西焼津 11:09 〜 11:49 焼津 徒歩 焼津 12:01 〜 12:14 静岡 静岡 13:58 〜 15:09 熱海 熱海 15:18 〜 15:40 小田原 小田原 15:48 〜 17:10 新宿 小田急 新宿 17:07 〜 17:13 池…

C++のコンパイルエラー

特にSTL関係のメッセージは訳が分からないことが多いが、 困ったときは「CXXXX」を検索するとよい。 一発で分かることがある。 今日も、関数オブジェクトがらみでわからないことがあったが、 検索の1番上を見たら直ちにわかった。

三角形の数(4)

合同な三角形の数も数えておこう。 T = S1 + S2 + S3 = (S + S3) / 2 nが3で割り切れるとき、 T = (n2-3n+6)/2 + [(n-1)/2]/2 nが偶数のとき、 T = (n2-3n+6)/2 + (n-1)/4 = (n2+3)/12 nが奇数のとき、 T = (n2-3n+6)/2 + (n-2)/4 = n2/12 nが3で割り切れな…

東京(2)

神田 9:58 〜 10:16 大塚 山手線 池袋 15:46 〜 15:52 新宿 埼京線 新宿 15:59 〜 16:31 相模大野 小田急 相模大野 16:32 〜 17:30 小田原 小田急 小田原 17:42 〜 18:05 熱海 熱海 18:08 〜 19:56 島田 島田 20:05 〜 20:49 浜松 浜松 20:52 〜 21:25 豊橋 …

東京(1)

刈谷 8:22 〜 8:53 豊橋 豊橋 9:08 〜 9:40 浜松 浜松 9:55 〜 10:38 島田 島田 10:48 〜 12:17 三島 三島 12:49 〜 14:10 函南 徒歩 函南 14:12 〜14:21 熱海 熱海 14:36 〜 14:58 小田原 小田原 15:11 〜 16:47 新宿 小田急 新宿 16:53 〜 17:02 池袋 山手…

三角形の数(3)

mを4で割った余りで場合分けする。 m = 4kのとき n = 12k, a = 6k, S1 = 9k2 b = 2k-1, S2 = 3k2, S3 = 6k-1 m = 4k+1のとき n = 12k+3, a = 6k+1, S1 = 9k2+3k b = 2k, S2 = 3k2+3k+1, S3 = 6k+1 m = 4k+2のとき n = 12k+6, a = 6k+3, S1 = 9k2+9k+2 b = 2k…

三角形の数(2)

ふつうに数えてみる。 nが3の倍数のときを考える。 n = 3mとする。 長辺の長さをlとする。 たとえば、n=9のとき、 l=5〜7なら、残りの辺は(1, 8-l), ..., (8-l, 1)(重複あり) l=4なら、残りの辺は、(1, 4), (2, 3) l=3なら、(3, 3) l n/2 残りの辺は (1, n…

大阪

刈谷 8:20 〜 9:46 米原 米原 9:53 〜 10:11 近江八幡 近江八幡 10:15 〜 11:02 篠原 徒歩 篠原 11:17 〜 11:21 野洲 野洲 11:43 〜 12:43 大阪 梅田 12:49 〜 12:51 淀屋橋 大阪 16:30 〜 17:52 米原 米原 18:14 〜 19:43 刈谷

三角形の数(1)

辺の長さが整数で、総和が決まっている三角形を数える。 ただし、反転してはじめて同じになるものは別の三角形と考える。 たとえば、総和が5のとき、 (3, 1, 1), (2, 2, 1) が挙げられる。 5点を円周上に並べる。 そのうち3点を選んで結ぶと、三角形ができる…

琵琶湖半周未満

刈谷 6:34 〜 8:11 米原 米原 8:23 〜 8:45 高月 北陸本線 高月 9:15 〜 14:45 近江高島 自転車 近江高島 15:23 〜 16:05 近江塩津 湖西線 近江塩津 16:08 〜 16:47 米原 北陸本線 米原 17:14 〜 18:43 刈谷 自転車は70km程度だったらしい。 帰りの湖西線は…

1500

走行距離 1.5km 実時間 5分31秒 走行時間 5分31秒 平均速度 16.3km/h 3週間前に走って5分55秒で、 これはひどいと思ったが、 最近スピード練習していて、 そろそろ自己ベストが出るのではと思って、 3週間ぶりに走ってみた。 2年前の自己ベストを3秒更新した…

10進/16進変換?

最近、よくバイナリファイルをバイナリエディタで見る。 しかし、例えば 22 01 00 00となっていても、これが10進でいくつになるかすぐにはわからないだろう。 そこで、次のような関数を作る。 int dec2hex(int x) { int y = 0; int h = 1; while(x != 0) { i…

整数の四則演算(2)

シフト演算 // 382ms for(var i = 0; i 4 >> 1; }加算と同等。 除算 // 481ms for(var i = 0; i 4 / 2; }整数の範囲を外れてても同等。 // 473ms for(var i = 0; i 12345678900 / 3456789; }結果が64ビット整数の範囲を超えると遅くなる。 // 780ms for(var …

整数の四則演算(1)

基本的なところをおさえておく。 JScript5.6で、 いずれも100万回繰り返す。 ループ // 281ms for(var i = 0; i ; } 加算 // 375ms for(var i = 0; i 1 + 1; } // 384ms for(var i = 0; i 99999999 + 100000000; } // 401ms for(var i = 0; i 100000000 + 10…

多倍長整数の計算(5)

自乗の計算は、異なる積よりも速い。 f(x) = a0 + a1x + a0x2 + ... f(x)2 = a02 + 2a0a1x + ( 2a0a2 + a12)x2 + ... ほとんどの場合で同じ乗算が2回行われる。 自乗にすると、8秒と1/2になった。

多倍長整数の計算(4)

繰り上がりの処理が楽になると、 繰り上がり計算を毎回しなくても済むようになる。 1万以上になると、すなわち加算すると、 ほぼ毎回繰り上がり計算をしていたが、 整数は21億ちょっとまであるはずなので(確かめていない)、 20億以上になってはじめて繰り…

多倍長整数の計算(3)

前回の関数は、改良して、70秒→48秒となった。 前回は、被乗数を下の桁から順に計算したが、 今回は積を下の桁から計算する。 そうすると、場合わけが少しややこしいが、 繰り上がりの処理が少し楽になる。 42秒となった。

多倍長整数の計算(2)

タイトル変えた。 1は前日の記事ということで。2乗していったほうが速いだろうということでその関数を作ってみた。 今度は4桁で区切って計算している。 var NFIGURE = 4; var INT_MAX = Math.round(Math.pow(10, NFIGURE));function multiple(x, y) { var z …

Ackermann関数(2)

265536を計算することを考える。 次々と2乗していけばいいのだが、 プログラムとしては2倍するほうがずっと簡単。 時間はかかるが、1を65536回2倍する。 function twice(x) { var length = x.length; var y = 0; // 繰り上がり for(var i = 0; i var a = x[i…

Ackermann関数(1)

最近、これを読んでいる。計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座)作者: 高橋正子出版社/メーカー: 近代科学社発売日: 1991/08/01メディア: 単行本購入: 8人 クリック: 160回この商品を含むブログ (36件) を見るこの中でアッカーマ…