# Conditional probability brain teaser

For fun I was looking through brain teasers and came across this one on a website

You’re about to board a train from London to Newcastle. You want to know if it’s raining, so you call your three friends who live in Newcastle. Each friend has a 2/3 chance of telling you the truth and a 1/3 chance of telling you a lie.

All three friends tell you that, yes, it’s raining in Newcastle.

What is the probability that it is, in fact, raining in Newcastle?

The answer given is 96% with this explanation:

You only need one friend to be telling the truth. So if you calculate the odds of them all lying, that’s 1/3 multiplied together, making 1/27 (1/3 x 1/3 x 1/3).

So that’s a 1 in 27 chance that all of your three friends are lying. So, switch that around, and it’s a 26/27 chance one of them is telling the truth – or 96% - that it is, indeed raining in Newcastle!

However, the answer is ignoring the fact that all friends agreed so I see two scenarios. (1) they all told the truth (8/27) or (2) they all lied (1/27). Limiting to only these two, the probability of it raining should be (8/27) / (8/27 + 1/27) or 8/9 NOT 26/27. Is the answer given on the website wrong?

I'm also wondering if the probability of it raining makes a difference (meaning the question is poorly worded/missing information)? For instance, if the location was the Sahara Desert instead of Newcastle, everyone's gut instinct would think the friends are lying about it raining even if they all agreed that it was.

If it helps here is the code I used as an attempt to simulate the scenario

import random
def main(N):
rain, dry = 0, 0
for _ in range(N):
is_lie1 = random.randint(1, 3) == 1
is_lie2 = random.randint(1, 3) == 1
is_lie3 = random.randint(1, 3) == 1
if sum([is_lie1, is_lie2, is_lie3]) == 0:
rain += 1
elif sum([is_lie1, is_lie2, is_lie3]) == 3:
dry += 1
print(rain / (rain + dry))

• P(rain| told it’s raining) = P(Told it’s raining|rain) P(rain)/P(Told it’s raining). This seems like a problem where the proposed solution, while seemingly correct, took shortcuts that make sense according to our (awful, absolutely awful) intuition about probability, rather than working through the details of Bayes’ theorem. At the very least, I think they’re assuming that P(rain)/P(Told it’s raining)=1.
– Dave
May 17, 2020 at 4:39
• That's something I can live with as a "lie" or "truth" is defined by the state of the weather. I'm okay taking that assumption for this problem May 17, 2020 at 20:47
• @Dave can you take that approach though given the fact that P(rain) is unstated? May 21, 2020 at 4:40
• To add some data to the problem: according to Wikipedia, there are 122 rainy days in Newcastle per year, and 122/365.25 = 0.3342 ≈ 1/3 (which is perfect for problems involving simple numbers). So the prior odds of rain would be 1:2, and multiplying by the Bayes' factor (computed by @SextusEmpiricus below) gives 4:1 as the posterior odds, i.e. the probability of rain conditional on your friends' answers is 4/5 = 80%. Oct 31, 2020 at 15:02

Indeed it matters where you are. In the rainforest it will be much more likely that it is raining if these friends all tell you that it is raining in comparison to the case of the Sahara desert.

What this website should have been computing is the likelihood ratio for rain versus no rain, the Bayes factor:

$$\frac{\text{P(all friends say rain, if it rains)}\hphantom{\text{does not}}}{\text{P(all friends say rain, if it does not rain)} }= \frac{\left({2}/{3}\right)^3}{\left({1}/{3}\right)^3} = 8$$

And this you multiply with the odds of rain and no rain without information. Say if it is normally 1:1 odds for rain versus no rain then now it is 8:1.

What the website computed is the denominator in the above equation.

$$\text{P(all friends say rain, if it does not rain)} = \frac{1}{27}$$

You can not turn that around the way they did.

$$\begin{array}{rcl} 1-\text{P(all say rain, if no rain)}& = &\text{P(not all say rain, if no rain)}\\ &=& \text{P(one or more say rain, if no rain)} \end{array}$$

But not

$$1-\text{P(all say rain, if no rain)} \neq \text{P(there's no rain, if all say rain)}$$

It is the application of the wrong rule. They applied the complement rule instead of Bayes' rule.

Okay, I bought a flight to Newcastle and befriended 3 dubious individuals. Every day I called them and asked for help simulating this brain teaser.

The probability is 8/9 only if the chance of rain is 50%.

There are two possibilities given what's known. Either it's raining and all the friends are telling the truth or it's dry and all of them are lying. This is of course dependent on the chance of rain. So this brain teaser does not have an answer unless the prior probability of rain is given

import random
def main(N, rain_percent):
rain, dry = 0, 0
for _ in range(N):
is_dry = int(random.random() > rain_percent)

if is_dry:
is_lie1 = random.randint(1, 3) == 1
is_lie2 = random.randint(1, 3) == 1
is_lie3 = random.randint(1, 3) == 1

# All lies (said it would rain, but was dry)
if all([is_lie1, is_lie2, is_lie3]):
dry += 1

else:
is_truth1 = random.randint(1, 3) != 1
is_truth2 = random.randint(1, 3) != 1
is_truth3 = random.randint(1, 3) != 1

# All truths (said it would rain)
if all([is_truth1, is_truth2, is_truth3]):
rain += 1

print( (rain) / (rain + dry) )

• Also, the question does not actually say the three friends are independent. They might always agree, for all we know. Jun 1, 2020 at 6:29

The answer given on the website is wrong.

The 96% figure tells you how likely it is, on the whole, that at least one of your friends tells the truth at any given time. That is, if you call them every day for many days, you'll find that on only 4% of days they all lie.

However, on the remaining days, they don't all tell the truth. Some days, only two of them do, and other days only one is truthful while two of them are lying. These 2:1 split-days all contribute to the 96% figure.

As you realized, days where all your friends agree are a more specific subset. These are days where they either all lie, or all tell the truth. There is no way for one friend to be telling the truth while the other two lie (or vice versa), and for them to still agree.

If they all lie, then we are indeed dealing with one of those "4%-days" (1 in 27) that are complementary to the 96% figure. However, if they all tell the truth, we're in a more specific subset of days than the 96%-set. This specific subset, where they all tell the truth, only comprises 8/27 ≈ 30% of days. Thus, as you correctly calculated, if we condition on your friends all agreeing, then the chance that they all tell the truth is 8/9, while the probability that they are all lying is 1/9.

The 8 in 9 figure is the highest certainty you're going to get by consulting your friends, on days where they all agree. On all other days, only two of your friends agree with each other. This happens on 6 out of 9 days. On 4 of those days, the two agreeing friends are truthful. On the other 2, the one dissenting friend is truthful. So, when exactly two of your friends say it's raining (or not), there is a 2/3 chance that this is correct. Thus, if you always trust the majority (which is the best you can do unless you know who's lying), your information will be correct only about 74% of the time.

As Patrick Stetz's answer pointed out, these calculations do indeed depend on the prior probability of rain. If rain is very unlikely on the whole, then the observed pattern of responses is more likely to be because it really isn't raining but your friends all lied. And, as Thomas Lumley said in his comment, it also depends on the friends all behaving independently from each other. For example, if friend 1 gets their weather information from friend 2, then you really need to treat those two friends as just one data point. In the most extreme case, if they are perfectly dependent (e.g. because they all watch the same unreliable weather report and don't look out the window), then when they all say it rains the probability that it really is raining is only 2/3 (same as if you only asked one of them).