Гост написа:Имам нужда от помощ.
Задачата е следната: Даден човек стреля по кръгла мишена разделена на четири части посредством три концентрични окръжности. Наградите при уцелване на всяка част (отвън навътре) са съответно 3,5,7 и 9 лева като вероятността (отново в същия ред) са 1/6,1/6,2/6 и 2/6. Човекът стреля четири пъти. Намерете вероятността да спечели общо 24 лева.
Благодаря предварително!
Ок, дръжте се, това ще е сложно...
Нека първо да видим колко е отговора?
- Код: Избери целия код
from random import choice
from collections import defaultdict
n,N=0,100000000
D=defaultdict(int)
for i in range(N):
s=0
for k in range(4):
c = choice([3,5,7,7,9,9])
s+=c
D[s]+=1
print(D[24]/N)
0.14197179Ок, търсим нещо такова.
Да видим всички уникални разпределения от 4 изстрела които ни дават 24:
- Код: Избери целия код
from random import choice
from collections import defaultdict
n,N=0,10000
D=defaultdict(int)
S=set()
for i in range(N):
s=0
C=[]
for k in range(4):
c = choice([3,5,7,7,9,9])
C.append(c)
s+=c
if s == 24:
S.add(tuple(sorted(C)))
D[s]+=1
print(S)
{(5, 5, 7, 7), (3, 3, 9, 9), (3, 5, 7, 9), (3, 7, 7, 7), (5, 5, 5, 9)}(това предполагам можехме да направим на ръка)
И сега да изчислим по колко уникални начина с пермутации можем да образуваме всяко от горното комбо:
[[(5, 5, 7, 7), 4*3*2*1/((2*1)*(2*1))],
[(3, 3, 9, 9), 4*3*2*1/((2*1)*(2*1))],
[(3, 5, 7, 9), 4*3*2*1],
[(3, 7, 7, 7), 4*3*2*1/(3*2*1)],
[(5, 5, 5, 9), 4*3*2*1/(3*2*1)]]
Това направихме на ръка за всеки случай гледайки колко са уникалните стойности.
И сега да изчислим конкретните вероятностти за всеки случай и да ги съберем:
- Код: Избери целия код
W = [[(5, 5, 7, 7), 4*3*2*1/((2*1)*(2*1))],
[(3, 3, 9, 9), 4*3*2*1/((2*1)*(2*1))],
[(3, 5, 7, 9), 4*3*2*1],
[(3, 7, 7, 7), 4*3*2*1/(3*2*1)],
[(5, 5, 5, 9), 4*3*2*1/(3*2*1)]]
p=0
for r,m in W:
pp=1
for q in r:
pp*={3:1/6, 5:1/6, 7:2/6, 9:2/6}[q]
p+=pp * m
print(p)
0.1419753086419753Много добре и заковахме отговора.
In [225]: 100*(0.1419753086419753 - 0.14197179)/0.1419753086419753
Out[225]: 0.0024783478260908373
Да видим как изглежда разпределниетоп на сумите като картинка:
In [245]: X = [a[0] for a in sorted(D.items())]
In [246]: Y = [a[1]/N for a in sorted(D.items())]
In [247]: plt.plot(X,Y)
Out[247]: [<matplotlib.lines.Line2D at 0x2701069a090>]
In [248]: plt.show()

- streliver34.png (23.09 KiB) Прегледано 1048 пъти