回答:
あなたの望ましい平均は方程式によって与えられます:
そこからの確率は次のことを1s
する必要があります.525
Pythonの場合:
x = np.random.choice([-1,1], size=int(1e6), replace = True, p = [.475, .525])
証明:
x.mean()
0.050742000000000002
1と-1の1'000'000サンプルを使用した1'000実験:
完全を期すために(@Elvisのヒント):
import scipy.stats as st
x = 2*st.binom(1, .525).rvs(1000000) - 1
x.mean()
0.053859999999999998
1と-1の1'000'000サンプルを使用した1'000実験:
そして最後に、@ŁukaszDeryło(Pythonでも)によって提案されているように、均一な分布から描画します。
u = st.uniform(0,1).rvs(1000000)
x = 2*(u<.525) -1
x.mean()
0.049585999999999998
1と-1の1'000'000サンプルを使用した1'000実験:
3つすべてが実質的に同じに見えます!
編集
中央のいくつかの線は、定理と結果の分布の広がりを制限します。
まず第一に、平均のドローは確かに正規分布に従います。
第2に、この回答に対する@Elvisのコメントでは、1,000回の実験で得られた平均の正確な広がり(約(0.048; 0.052))、95%信頼区間について、すばらしい計算が行われました。
そして、これらは彼の結果を確認するためのシミュレーションの結果です:
mn = []
for _ in range(1000):
mn.append((2*st.binom(1, .525).rvs(1000000) - 1).mean())
np.percentile(mn, [2.5,97.5])
array([ 0.0480773, 0.0518703])
次に、期待値は
私はMatlabのユーザーではありませんが、
2*(rand(1, 10000, 1)<=.525)-1
EXACT 0.05が必要な場合に備えて、MATLABで次のRコードと同等のことを実行できます。
sample(c(rep(-1, 95*50), rep(1, 105*50)))