Відповіді:
Бажане середнє значення задається рівнянням:
з чого випливає, що ймовірність 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 зразками 1s і -1s:
Для повноти (підказка шапки до @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:
І нарешті, виходячи з рівномірного розподілу, як це запропонував @ Ł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 зразками 1s і -1s:
Всі три виглядають практично однаково!
EDIT
Пара рядків на центральній граничній теоремі та поширення отриманих розподілів.
Перш за все, залучення засобів дійсно слідують нормальному розподілу.
По-друге, @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])
Змінна зі значеннями і має вигляд з a Бернуллі з параметром . Очікуване його значення - , тому ви знаєте, як отримати (тут ).1 Y = 2 X - 1 X p E ( Y ) = 2 E ( X ) - 1 = 2 p - 1 p p = 0,525
У R ви можете генерувати змінні Бернуллі за допомогою rbinom(n, size = 1, prob = p)
, наприклад,
x <- rbinom(100, 1, 0.525)
y <- 2*x-1
Згенеруйте зразків рівномірно , перекодуйте числа нижче 0,525 до 1 та відпочинок до -1.
Тоді очікуване вами значення
Я не користувач Matlab, але я думаю, що це буде
2*(rand(1, 10000, 1)<=.525)-1
На всякий випадок, якщо ви хочете РЕЖИМИ 0,05, ви можете зробити еквівалент наступному коду R в MATLAB:
sample(c(rep(-1, 95*50), rep(1, 105*50)))