New "NBA 2027 (3-2-1)" draft type

Since the NBA has released the final details of their new lottery system (AKA the "3-2-1 lottery"), I have added it to BBGM. You can select it in any league by changing the "Draft Type" setting to "NBA 2027 (3-2-1)". It is also the default in new random players leagues, and in new real players leagues once you sim to 2027.

The headline feature of the 3-2-1 lottery is that all of the lottery picks are randomly selected, not just the top 4. So there are a lot more possible outcomes of the draft. Nearly any team can win any pick:

There are still some teams which are ineligible for some picks:

Those constraints apply retroactively when you enable the NBA 2027 draft type, it will look back and check the past 2 drafts to see which teams those restrictions apply to.

Another notable thing about the 3-2-1 lottery is the odds of winning. The worst 3 teams actually have lower odds of winning top picks than the teams after them (2 chances rather than 3). The 9/10 seeds from the play-in tournament also have only 2 chances. And the losers of the 7/8 play-in game also get 1 chance. That means it's not just non-playoff teams in the draft, the 8 seeds will be in it too!

Some of the complexities of the 3-2-1 lottery interact with features of BBGM:

Calculating probability of draft picks is tricky! When you use the 3-2-1 lottery, you'll see a warning message above the lottery table and you'll notice that the probabilities in the table change slightly if you reload.

This is because it's actually really to compute so many conditional probabilities, so instead it just estimates them.

Why not precompute the odds and hardcode them into the game? Problem is, the odds are not the same every year. They depend on how many teams in the lottery have constraints on winning the #1 or a top 5 pick, and whether those teams have 1, 2, or 3 chances. In theory I could find every possible scenario and precompute them all, but that's a lot of scenarios! (Homework assignment for you: how many possible scenarios is it, exactly?)

However when you actually sim the lottery, it does do it correctly. The estimated probabilities you see in the UI are not actually used for simming the lottery. To sim the lottery you just pick a random number between 1 and (total number of chances), see which team that corresponds to, then delete that team from the list and repeat again for the 2nd+ pick. That is fast and easy to do!

How are leagues with non-default teams, conferences, of playoff settings handled? Well there's no way to know how the NBA might choose to do it, so I tried to make some reasonable guesses about what might happen as those settings change.

How does this affect how the AI values pre-lottery draft picks in trades? Unfortunately, right now it doesn't. That has been a longstanding issue with the trade AI - it knows how good teams are projected to be and it knows how good future draft classes are, but it does not make any adjustment for the draft lottery. So it thinks "first round draft pick of the third worst team" should be worth the same as "the third best prospect in the draft". Even with the old lottery system this was not true (a chance at hitting #1 for a generational prospect is a big deal) but it's even worse now since the lottery picks are almost completely random now. Eventually I will have to fix this, but in the mean time, you might be able to exploit the AI in trades as they will overvalue picks from the worst lottery teams and undervalue them from the best lottery teams.

Can I break it by rigging the lottery (with God Mode) in a way that forces one of the restrictions to be violated? I'm not sure how many of you would have asked this question, but I bet someone would have, and I certainly did! And it was surprisingly difficult to get this working right (I hope there are no bugs!) but now the answer is no, you can't break it. For example if you set a team to be chosen for a pick they are restricted from winning, they will still win it. Or if you rig it so that all the picks a team is eligible for are rigged to another team, they will win some pick they are ineligible for.

Also my 2 cents on the 3-2-1 draft lottery - I think it's pretty good! It's better than most of the other ideas I've seen except COLA. Not perfect and probably too punitive to bad teams (not just because of the decreased odds for the 3 worst teams, even without that you could simply have bad luck in the lottery for many years, while other teams might have excessively good luck) but it should eliminate the vast majority of tanking. And maybe we need a very punitive system for at least a few years, to get people out of the tanking mindset.

But what about for BBGM? Is this new lottery more fun than the old one because it adds some more randomness? Or does that actually make it more annoying? Should I change the default in random players leagues to something else? Let me know what you think.