Processing math: 100%

Sunday, May 20, 2012

Brainteaser with Montecarlo simulation

Here's a brain teaser.
A man speaks the truth 3 out of 4 times. He throws a die and reports it to be a 6. What is the probability of it being a 6?
Actually we know that the man has said he either got a 6 or he didn't. So the probability that we are interested in is P(A|B), where the events A and B are A: "The man said 6", B: "He actually got a 6". This conditional probability is P(A|B) = \frac{P(A,B)}{P(B)}.

We work with the assumption of independence, so P(A,B)=P(A)P(B)=\frac{3}{4}\frac{1}{6} = \frac{3}{24}=\frac{1}{8}.

We decompose the event B in the intersection with A and the intersection with the complementary of A (being the last one defined as "he did not get a 6"), so that P(B)=P(B,A) + P(B,\bar{A}). We already have the first one so we compute P(B,\bar{A})=\frac{1}{4}\frac{5}{6}=\frac{5}{24}, making P(B)=\frac{3}{24} + \frac{5}{24} = \frac{8}{24} = \frac{1}{3}.

Therefore, P(A|B) = \frac{P(A,B)}{P(B)} = \frac{\frac{1}{8}}{\frac{1}{3}}=\frac{3}{8} = 0.375


Now we simulate the mentioned events in R. See that we generate the number of times the man tells the truth independently of the times he gets a six. We then count the times that a real 6 coincide with the man telling the truth in num. In the denominator den we count the previous amount plus the number of times he says 6 but does not get a dice with a 6. This means that, among all the times the man reports a 6 (both true or false), we select only those times they are true.

N=100000

dice=sample(1:6,N,replace=T)
lie=rep(0,N*3/4)
lie=c(lie, rep(1,N*1/4))
lie=lie[sample(1:N,replace=F)]

num=sum((dice==6)*(lie==0))
den=sum((dice==6)*(lie==0)) + sum((dice!=6)*(lie==1))

res=num/den

res
> res
[1] 0.3739862
Note that the output is very close to the theoretical result of 0.375.

No comments:

Post a Comment