Гост написа:Задача 43.
Цената на акциите се покачва или спада с 1 пипс (пункт) за един ден с еднаква
вероятност. Намерете вероятността че след 10 търговски дни цената на акциите ще:
а) спадне с 4 пипса;
б) се повиши с 2 пипса;
в) се повиши с 6 пипса.
Вероятността в случая не е дадена, но явно е 0.5
Tази задача е като да започнем от позиция 0 и да св движим нагоре или надолу по оста X. Така на четни дни можем да стъпваме само на четни позиции.
Да отбележим позицията на която сме стигнали с k и броят дни с n. Да погледнем какво ще стане ако n = k и k е положително. Има само един начин да стигнем и то е да избираме винаги нагоре. А има точно 2^k пътя. Вероятността за това ще е:
$p=1/ 2^k$
A ако вероятността за всеки ход за нагоре е 0.5 то вероятността е:
$p=0.5^k$
И
$1/ 2^k = 0.5^k$
А ако n = k-2? Става доста по-сложно, затова да променим подхода.
Да означим надолу нагоре с D и G. Тогава 10 дни ще е нещо такова:
GGDDGGGGDD
И сега точка
а) спадне с 4 пипса;
Ако искаме да сме 4 надолу, трябва да имаме 7 D и 3 G независимо в какъв ред, например:
GGGDDDDDDD
И тъй като G и D са равновероятно, въпросът се свежда до каква е вероятността да извадим 7 D и 3 G от торба която има 10 D и 10 G с връщане?
Да предположим, че искаме да ги извадим в точно този ред:
GGGDDDDDDD
Вероятността да извадим G e 1/2, след това пак G е пак 1/2, става $(1/2)^2$, и така нататък накрая става:
$(1/2)^{10}$
И сега колко различни подреждания имаме от 7 D и 3 G? Вземаме първото D, можем да го сложим на 10 позиции, второто D на 9, стават 10*9 и така нататък накрая имаме $10!$. Обаче 3G можем да наредим без да ги различаваме по 3! , а 7 D по 7!, значи (в Python ** е оператор за на степен и има по-голям приоритет):
[tex]\frac{10!}{2^{10}7!3!} = \text{math.factorial(10)/(2**10*math.factorial(7)*math.factorial(3)) }= 0.1171875[/tex]
Докато разсъжденията ни могат да се сторят напълно логични и правилни на някои, други ще кажат, че може и да грешим, затова да направим проверка със симулация:
- Код: Избери целия код
from random import random
n,N = 0, 10000000
for i in range(N):
pos = 0
for i in range(10):
if random()> 0.5:
pos += 1
else:
pos -= 1
if pos == -4:
n+=1
print(n/N,n,N)
0.1172029 1172029 10000000
Мисля, че имам много добро приближение!
Да видим и останалите точки:
б) се повиши с 2 пипса;
Това ще иска нещо такова: GGGGGGDDDD:
[tex]\frac{10!}{2^{10}6!4!} = \text{math.factorial(10)/(2**10*math.factorial(6)*math.factorial(4))} = 0.205078125[/tex]
в) се повиши с 6 пипса.
Това ще иска нещо такова: GGGGGGGGDD:
[tex]\frac{10!}{2^{10}8!2!} = \text{math.factorial(10)/(2**10*math.factorial(8)*math.factorial(2))} = 0.0439453125[/tex]