LeBron: It's LeBron here. I got a quick brain teaser for you.
If I'm down 3 with 30 seconds left
is it better to take the 3?
Or is it easier to take the 2 and attempt to fowl a
bad free throw shooter and get another possession?
Here's my friend Sal with an answer.
Sal: That's a very very interesting question, LeBron.
Calculating the probabilities of if you were to take a 3
what's your probability of tying the game
and then being able to win in overtime
that can be done on paper
but the scenario where you take a 2 and you attempt to fowl
the opposing team and they might make none or 1
or two free-throws and then you might get another posession
and then you take another 2
That's more complicated. You could attempt to do it on paper
but instead, I've written a little computer simulation here
and this type of a simulation is called a Monte-Carlo simulation and literally,
it'll run the scenarios and it will do it as many times
as we put in this variable over here. So we're gonna set it up
so we get an accurate number. We're gonna do it a THOUSAND times
for each of those scenarios and see what fraction in each scenario
which fraction do we end up winning? And that's a pretty good estimate
of the probability of us actually winning the game
depending on which strategy we choose.
The rest of these things, these variables that we set right over here
these are the parameters that will essentially drive
the outcomes. This three-point percentage, this is your
three-point percentage, I have it low here because I'm assuming
it's going to be a hard 3. It's going to be lower than
a typical 3 point percentage.
But obviously if this number, if you set it higher
than the three will look better. If you set it lower
than the 2 is going to look better.
This is your 2 point percentage. I'm assuming here
it's going to be a relatively easy 2 because the other
team isn't going to be defending as heavily against a 2.
So I put it a little higher but you can play with the numbers
to see what you get in different scenarios.
This is the probability of the opponent taking a 2,
this is the opponent's free-throw percentage.
Once again if this is very high than the fowling is not
going to look as good. If this is low the fowling might make sense.
And I put this a little bit lower than the league average
because I'm assuming you'll attempt to fowl
or you have a reasonable chance of fowling one of the weaker free-throw shooters.
This is how much time goes off the clock when you take a 2
This is how long it takes you to fowl. This is offensive rebound
percentage. And then I have a slightly
different thing that I separated out is
the, the percent chance of a team taking a free-throw.
If they miss their second free-throw the percent chance that they'll actually be
able to rebound it. So that's 15% you can play with that
And this is just a probability,or your percent chance of
winning in overtime. And I just put that at 50/50
and the rest of this really just uses those parameters
to go through the simulations. This is a little code
right over here just to draw the background or actually load the images
This is the meat. These two functions.
So take 3 is a scenario where we go for the 3.
So we try to make the 3, if we make the 3 then we
have essentially tied the game and now we're going into overtime
and if we win in overtime, then we win!
If neither of those things are true,
or if one of those things end up not being true
either we make the 3 and we lose in overtime, or we
don't make the 3, then false, we didn't win.
And this function is going to be called as many times as that
variable trials. So it could be called a thousand times
a million times, whatever we set it to, to figure out what
fraction of the scenarios do we win in?
This does the same thing for the taking the 2 and trying to fowl.
It gets a little bit more complicated but it's not too bad.
And it's a very simple simulation, I think a lot of people listening might
be able to add some, little bit more complexity
to maybe make it a little bit more accurate.
But what it does, it keeps of who has the posession,
how many points you're down,how much time is left,
and the way I implimented it, it really only works for specific
scenario we talked about. You would probably want to make it fancier
if you had more time on the clock or if you wanted
to cover more scenarios of different
point spreads. But this is essentially saying,
look, while we're gonna keep running this scenario,
while there's time left on the clock, this clause is talking about
what do we do if we have the possession?
If we're down by more than 3, then we're gonna want to take
it as quickly as possible and we just take the minimum time
off necessary to shoot a 2. Otherwise, we would acutally
want to run down the clock. So if we happened,
for whatever reason while going through this over and over again
to be up, we would probably want to run the clock down
before we take a shot. Now this right over here says,
remember, this is a scenario where we're taking a 2,
so this says, okay, lets try to go for the 2 if we make it,
then we're down by 2 less. And then we, the possession goes to the other team.
If we do not make it, does the opposing team rebound it?
So this is essentially saying, if the opposing team
makes the rebound, so we did not make the offensive
rebound, then they now have the possession.
This clause over is, what about the cases where we don't have the possession?
This is essentially what we say if we're down by a more than
zero points than we're going to try to fowl.
We're going to take the time off the clock to fowl.
Then the opponent is going to take their two free-throws
right over here, and there's a little bit of code to see
if in the situation that they missed the second free-throw,
there's some probability that the opponant might actually
be able to get the offensive rebound, so we actually put that in there as well.
Then there's the scenarios where maybe we just happen not to be down,
in which case, the opponent is likely to take a 2.
At least we assume that. This is a case where I think
other people could modify it more. The bottom line is
if we're not down, we definitely do not want to fowl.
So we're not fowling in this scenario.
Remember, we're in this 2 point scenario.
This essentially says, look, when the clock ends,
when time goes to zero, if we're down by more than zero
we lost. If we're down by less than zero, we won.
Otherwise, it's tied and we go into overtime.
So this clause right over here tests to see if we win in overtime.
All of the other things are really just to draw.
This draws the bars, this draws some of the numbers on top of it
Then, this is we actually run the trial.
So we call this as many times as there are trials
that trials variables, and we count how many times
do we win taking a 3? How many times do we lose taking a 3?
How many times do we win taking a 2? How many times
lose taking a 2? Then we just display everything right over there.
Now that we have a decent understanding of the program
itself, let's get a little bit of a drumroll,
and see whether it makes sense to take the 3,
given these assumptions. Instead of having ten trials
let's give it a big number. Let's say a thousand trials,
let me reset this this thing. So restart it right over here.
You see its getting better approximations.
This is what fraction of the trial so far resulted in
a victory. So right now taking a 2, looks like it's about
15-16%, looks like we got a victory. Here its 12-13%
As we got more and more trials we're more likely to have
a much much more accurate sense of our probabilities.
A more accurate approximation of the probabilities.
But let's see, it's getting close...
And we get... 2. Well based on this, it looks like there's...
Based on the assumptions that we made, and this is important,
based on these assumptions, it looks like we were better off
by a little bit, slightly higher, taking the easy 2 then trying to fowl.
But if we change things, and I'll make it lower trials
so that we don't have to wait all day, let's make it 300 trials,
if you were to raise your 3 point percentage to say,
let's say it's 35% and let's say the 2 is much harder
than we had before, let's say its 40% and let's say
your opponent is a really good free-throw shooter
so let's say it's 80%, I suspect that you will have a different outcome.
Let's restart it and see what happens.
Now all of a sudden, it looks like you're much better off
given these assumptions. You're much better off going for the 3 to tie.
and go into overtime. So these are really the assumptions
that drive it for this simulation.