Answers:
您所需的均值由等式给出:
从中得出的概率1s
应该是.525
在Python中:
x = np.random.choice([-1,1], size=int(1e6), replace = True, p = [.475, .525])
证明:
x.mean()
0.050742000000000002
为了完整起见(@Elvis的技巧提示):
import scipy.stats as st
x = 2*st.binom(1, .525).rvs(1000000) - 1
x.mean()
0.053859999999999998
1 000次实验,1 000 000个1s和-1s样本:
最后,如@ŁukaszDeryło(同样在Python中)所建议的,从均匀分布中提取:
u = st.uniform(0,1).rvs(1000000)
x = 2*(u<.525) -1
x.mean()
0.049585999999999998
1 000次实验,1 000 000个1s和-1s样本:
所有这三个看起来几乎相同!
编辑
Central极限定理和结果分布的分布上有几条线。
首先,均值的确遵循正态分布。
其次,@ Elvis在对这个答案的评论中对在1000个实验(大约(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
万一您需要精确的0.05,则可以在MATLAB中执行以下R代码的等效操作:
sample(c(rep(-1, 95*50), rep(1, 105*50)))