アカウント名:
パスワード:
Wikipediaに乗ってた式を元に、とりあえずシミュレーションしてみた。
import random def german_tank(n, k): tanks = range(n) random.shuffle(tanks) m = max(tanks[:k]) return (k+1.0)*m/k - 1 if __name__ == '__main__': patterns = [ (100, 5), (100, 10), (100, 20), (100, 50), (10000, 10), (10000, 100), (10000, 1000), (
つまり、番号が100程度だと、たった1個のサンプルでもN: 10000 k: 100 estimated: 10013.15 9768.73 10041.43 9962.65 9966.69N:100000 k: 1000 estimated: 100086.99 99885.79 100088.99 100089.99 100047.95程度の精度で予測ができると?
1~100のシリアルナンバーどれを引く確率も1/100だとしたとき、サンプル数k=1だと、m(k+1)/k-1 = 2m - 1だから、その推定値の平均は100で、分散は3333です。標準偏差は57.73です。
# 今気づいたけど、プログラムの方、シリアルナンバーが0から始まることになっちゃってる。全部の結果に1足したらなおるのかなぁ。。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
※ただしPHPを除く -- あるAdmin
シミュレーションしてみた。 (スコア:3, 興味深い)
Wikipediaに乗ってた式を元に、とりあえずシミュレーションしてみた。
1を聞いて0を知れ!
Re: (スコア:0)
これは違う。 推定値のばらつき(標準偏差)は、N/k です。
Re:シミュレーションしてみた。 (スコア:1)
つまり、番号が100程度だと、たった1個のサンプルでも
N: 10000 k: 100 estimated: 10013.15 9768.73 10041.43 9962.65 9966.69
N:100000 k: 1000 estimated: 100086.99 99885.79 100088.99 100089.99 100047.95
程度の精度で予測ができると?
1~100のシリアルナンバーどれを引く確率も1/100だとしたとき、サンプル数k=1だと、
m(k+1)/k-1 = 2m - 1
だから、その推定値の平均は100で、分散は3333です。標準偏差は57.73です。
# 今気づいたけど、プログラムの方、シリアルナンバーが0から始まることになっちゃってる。全部の結果に1足したらなおるのかなぁ。。
1を聞いて0を知れ!