Ваше желаемое среднее значение определяется уравнением:
N⋅ p - N⋅ ( 1 - р )N= .05
из чего следует, что вероятность 1s
должна быть.525
В Python:
x = np.random.choice([-1,1], size=int(1e6), replace = True, p = [.475, .525])
Доказательство:
x.mean()
0.050742000000000002
1 000 экспериментов с 1 000 000 образцов 1 с и 1 с:
Ради полноты (отзыв на @Elvis):
import scipy.stats as st
x = 2*st.binom(1, .525).rvs(1000000) - 1
x.mean()
0.053859999999999998
1 000 экспериментов с 1 000 000 образцов 1 с и 1 с:
И, наконец, рисование из равномерного распределения, как предлагает @ Łukasz Deryło (также в Python):
u = st.uniform(0,1).rvs(1000000)
x = 2*(u<.525) -1
x.mean()
0.049585999999999998
1 000 экспериментов с 1 000 000 образцов 1 с и 1 с:
Все три выглядят практически одинаково!
РЕДАКТИРОВАТЬ
Пара строк по центральной предельной теореме и разброс полученных в результате распределений.
Прежде всего, ничьи средств действительно следуют нормальному распределению.
Во-вторых, @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])