Genie_Almo написа:Петър и Светлана са истински късметлии! Освен, че са щастливо женени, рождените дни и на двамата, както и тяхната гошишнина от сватбата, винаги се падат в един и същи ден от седмицата. И трите дати винаги се падат или в понеделник, или във вторник, или в сряда и т.н., в рамките на календарната година. Но каква е вероятността това да се случи? За определеност приемаме, че Петър и Светлана са наши съвременници и в момента са някъде из този свят и са щастливи заедно.
from datetime import datetime as dt
from random import randint
def make_random_date(year):
while True:
try:
d = dt(year=year,month=randint(1,12),day=randint(1,31))
return d
except ValueError:
pass
p,N=0,10000000
for i in range(N):
year= randint(2000,2023)
d1,d2,d3 = make_random_date(year),make_random_date(year),make_random_date(year)
if d1.weekday()==d2.weekday()==d3.weekday():
p+=1
print(p,N,p/N)
Гост написа:Получих отговор [tex]P = \frac{2704}{133225} \approx 0,02[/tex] - верен ли е, ако не е - далече ли съм, или близо
peyo написа:
И сега общата вероятност е:
In [12]: 0.004223548071163986*(1/7)*(1/7) + 0.5892311338579034*(1/7)*(1/7)
Out[12]: 0.012111320039368722
И сега остава да направим симулация и да видим дали сме познали!
...
203652 10000000 0.0203652
Което въобше не е близо. Но пък е много близо до това:Гост написа:Получих отговор [tex]P = \frac{2704}{133225} \approx 0,02[/tex] - верен ли е, ако не е - далече ли съм, или близо
Значи Гост е прав, а аз има грешка някъде в логиката. Май се сещам къде греша. Има възможност трите дати да не са от същата страна и пак да са в един и същи ден.
from datetime import datetime as dt
from random import randint
def make_random_date(year):
while True:
try:
d = dt(year=year,month=randint(1,12),day=randint(1,31))
return d
except ValueError:
pass
p,N=0,10000000
for i in range(N):
year = 2023
dx = [make_random_date(year),make_random_date(year),make_random_date(year)]
flag_pass=True
for year in range(2000,2023):
for j in range(3):
dx[j] = dt(year=year,month=dx[j].month,day=dx[j].day)
if not (dx[0].weekday()==dx[1].weekday()==dx[2].weekday()):
flag_pass=False
break
if flag_pass:
p+=1
print(p,N,p/N)Назад към Математиката-обща тема
Регистрирани потребители: Google [Bot]