pal702004 написа:Не е ОК, защото делиш на $N$, а трябва да делиш само на броят result==info. Тоест, колко пъти resul==info (брояч, защото по условие е известно, че информацията на изхода е същата като но входа). И колко пъти от тях А е казал истината.
- Код: Избери целия код
result = Г if rand()<1/3 else not Г
if result == info
N1+=1
if Б == info:
n+=1
print(n/N1,n,N)
Ok, съгласен съм, моя грешка. Вярната симулация вече дава резултат:
- Код: Избери целия код
from random import random as rand
n,N1,N=0,0,100000000
for i in range(N):
info = rand()<1/2
А = info
Б = А if rand()<1/3 else not А
В = Б if rand()<1/3 else not Б
Г = В if rand()<1/3 else not В
result = Г if rand()<1/3 else not Г
if result == info:
N1+=1
if Б == info:
n+=1
print(n/N1,n,N1,N)
0.31702885542612896 16049070 50623373 100000000
Нещо около 1/3, но не съвсем.