I put it together. Here’s the code I wrote in Python.
import random
genders = ['boy', 'girl']
defrun():
other_child_girls = 0for i inrange(10000):
other_child = get_other_child()
if other_child == 'girl':
other_child_girls += 1print(other_child_girls)
defget_other_child():
children = random.choices(genders, k=2)
first_child_index = random.randint(0, 1)
first_child = children[first_child_index]
if first_child == 'boy':
other_child_index = (first_child_index + 1) % 2return children[other_child_index]
# Recursively repeat this call until the child at the door is a boy# (i.e., discard any cases where the child at the door is a girl)return get_other_child()
if __name__ == '__main__':
run()
And it turns out you were right. I ran it a few times and got answers ranging from 4942 to 5087, i.e., clustered around 50%.
That’s cool. Always nice to see a practical example of theory. Thanks to you I got to brush up on my Python too! I think it all makes sense. Everything is random, you exclude examples where s girl comes to the door. The odds are 50-50. Looks like you were right in the end though, this DID stir quite a bit of conversation lol!
There’ve been a lot of times when I simply didn’t believe something in statistics until I simulated it. Like this problem:
I have two children. One is a boy born on a Tuesday. What is the probability I have two boys?
I wanted to simulate that because the answer seems absurd. 13/27? Where does that even come from? I’m scared of snakes, so I use Baby’s First Programming Language: Tasker.
Variable randomize %sex Min:1 Max:2
Variable randomize %day Min:1 Max:7
Variable set %child1 “%sex%day”
Variable randomize %sex Min:1 Max:2
Variable randomize %day Min:1 Max:7
Variable set %child2 “%sex%day”
Goto 1 IF %child1 != 11 AND %child2 != 11
Now I’ve generated two random children, at least one of which is 11–a specific sex born on a specific day.
Variable add %BoyGirl IF %child1 = 2* OR %child2 = 2*
Variable add %BoyBoy IF %child1 = 1* AND %child2 = 1*
If either child is a girl, it adds one to the BG bucket. If neither one is a girl, it adds one to the BB bucket.
Variable add %Counter
Goto 1 IF %Counter > 1,000
Hit play and yep, about 48% of families were BB. But remove the Tuesday part and just simulate the question “I have two children, and at least one of them is a boy,” and it drops down to 33% again. I don’t understand it, but apparently the math maths.
Ha. As someone from the “mathematics is shortened to maths” part of the world, this sounds weird to me. I’d probably say “the maths mathses”. I just thought you might enjoy that.
Anyway, I Googled the problem you presented, and came across this excellent answer:
There are even trickier aspects to this question. For example, what is the strategy of the guy telling you about his family? If he always mentions a boy first and not a daughter, we get one probability; if he talks about the sex of the first born child, we get a different probability. Your calculation makes a choice in this issue - you choose the version of “if the father has a boy and a girl, he’ll mention the boy”.
What I’m aiming to is this: the question is not well-defined mathematically. It has several possible interpretations, and as such the “problem” here is indeed of the language; or more correctly, the fact that a simple statement in English does not convey enough information to specify the precise model for the problem.
The whole answer is worth reading, but that part there is the crux of it. It goes back to one of my earliest comments on this topic in this thread. The problem isn’t that maths is weird, it’s that language’s ability to describe mathematical problems is lacking. There are so many different ways to translate the described problem into mathematical formulae and they necessarily carry assumptions. Even far more subtle assumptions than I at first thought.
Since using “maths” as a verb is very much nonstandard, I would argue against trying to apply any rigorous rules to it. It’s about the vibes of the thing.
I put it together. Here’s the code I wrote in Python.
import random genders = ['boy', 'girl'] def run(): other_child_girls = 0 for i in range(10000): other_child = get_other_child() if other_child == 'girl': other_child_girls += 1 print(other_child_girls) def get_other_child(): children = random.choices(genders, k=2) first_child_index = random.randint(0, 1) first_child = children[first_child_index] if first_child == 'boy': other_child_index = (first_child_index + 1) % 2 return children[other_child_index] # Recursively repeat this call until the child at the door is a boy # (i.e., discard any cases where the child at the door is a girl) return get_other_child() if __name__ == '__main__': run()
And it turns out you were right. I ran it a few times and got answers ranging from 4942 to 5087, i.e., clustered around 50%.
That’s cool. Always nice to see a practical example of theory. Thanks to you I got to brush up on my Python too! I think it all makes sense. Everything is random, you exclude examples where s girl comes to the door. The odds are 50-50. Looks like you were right in the end though, this DID stir quite a bit of conversation lol!
There’ve been a lot of times when I simply didn’t believe something in statistics until I simulated it. Like this problem:
I have two children. One is a boy born on a Tuesday. What is the probability I have two boys?
I wanted to simulate that because the answer seems absurd. 13/27? Where does that even come from? I’m scared of snakes, so I use Baby’s First Programming Language: Tasker.
Variable randomize %sex Min:1 Max:2
Variable randomize %day Min:1 Max:7
Variable set %child1 “%sex%day”
Variable randomize %sex Min:1 Max:2
Variable randomize %day Min:1 Max:7
Variable set %child2 “%sex%day”
Goto 1 IF %child1 != 11 AND %child2 != 11
Now I’ve generated two random children, at least one of which is 11–a specific sex born on a specific day.
Variable add %BoyGirl IF %child1 = 2* OR %child2 = 2*
Variable add %BoyBoy IF %child1 = 1* AND %child2 = 1*
If either child is a girl, it adds one to the BG bucket. If neither one is a girl, it adds one to the BB bucket.
Variable add %Counter
Goto 1 IF %Counter > 1,000
Hit play and yep, about 48% of families were BB. But remove the Tuesday part and just simulate the question “I have two children, and at least one of them is a boy,” and it drops down to 33% again. I don’t understand it, but apparently the math maths.
Ha. As someone from the “mathematics is shortened to maths” part of the world, this sounds weird to me. I’d probably say “the maths mathses”. I just thought you might enjoy that.
Anyway, I Googled the problem you presented, and came across this excellent answer:
The whole answer is worth reading, but that part there is the crux of it. It goes back to one of my earliest comments on this topic in this thread. The problem isn’t that maths is weird, it’s that language’s ability to describe mathematical problems is lacking. There are so many different ways to translate the described problem into mathematical formulae and they necessarily carry assumptions. Even far more subtle assumptions than I at first thought.
I know this wasn’t the main point of your comment, but to be grammatically correct, it would be “the maths math.”
Plural verbs go with their plural noun subject and don’t need the s:
And like you said, maths being short for mathematics means it’s plural.
Since using “maths” as a verb is very much nonstandard, I would argue against trying to apply any rigorous rules to it. It’s about the vibes of the thing.