Recently I was making a villager trading hall in minecraft.

One of the main goals of a trading hall is to collect all villager trades. One of the trickiest is books, provided by a librarian. I got to wondering -- how long is this going to take?
Well, we can do some math to find out.
There are currently (as of Minecraft Java Edition 1.21.11) 40 trade-able books. 36 of them are available from the enchanting table, treasure chests[1], or trading.
4 are available only from treasure chests and trading. These are called Treasure enchantments.
- Curse of Binding
- Curse of Vanishing
- Frost Walker I and II
- Mending
There's also three books, which can be found only from treasure chests. We don't care about them for trading halls:
- Soul Speed
- Swift Sneak
- Wind Burst
There are no books available only from enchanting and not trading.
The core mechanic of searching for book trades is resetting. If we look at a librarian and find it has a trade we don't want, we reset it.
Villagers remember their profession and trades forever after trading. But if we haven't traded with a villager, we simply remove its profession, and then give it a profession again. Then we can see if we like the new starting trades better.
This is very useful for librarians, because they have every book available as a starting trade, so there's no need to investigate later trades for books.
These are the options to make the villager forget their profession I'm aware of:
- Ignore the villager and get a new one (for example with a breeder), moving or killing the old one. This isn't a "reset" per se, but it acts similarly.
- Break the profession block manually. In the case of a librarian, the lectern. When breaking the block, the villager loses their profession instantly.
- Block the path between the villager and their profession block. I haven't seen this documented, but they reset at the same time as trades reset (twice per minecraft day). I did this by dropping the villager 1 block using a piston.
- Move the villager at least 48 taxicab blocks from their profession block. (Not tested)
- Move the profession block with a piston. This is an instant reset, but you can't do it for a lectern in Java edition. (Not tested)
Some of these are instant, some take longer. Once villagers are shown a profession block, it only takes them a couple seconds to get their new profession, so that part is easy.
I found breaking and re-placing blocks to be annoying, so I settled on moving librarians up and down with pistons. It takes about 5 real-time minutes for them to reset, so I used about 50 librarians to counteract that. By the time I finished checking all 50 librarians, they were ready to reset again because 5 minutes had passed.
Then the question is: How many librarians do we need to look at, to get every book?
Well, the first question is: what are we interested in? Let's say we're interested in getting each of the 40 enchantments.
Well, it turns out each enchantment is equally likely: there's a 1/40 chance of getting it. Well actually, 1/60 -- there's a chance that no book trade is offered at all.
Then this is the coupon collector's problem, a classic math problem.
The number of trades to look at turns out to be: 3/2 x n x H(n) where H(n) is the n-th harmonic number. For n=40, H(40) = 1/1 + 1/2 + 1/3 + ... + 1/39 + 1/40 = 4.2785. So we need to check 257 librarians on average to get every enchantment.
But, are we really okay with that result? Given that Efficiency V is available as a starting trade, I want a librarian with Efficiency V, not Efficiency I!
There are:
| Enchantment | Level |
|---|---|
| Aqua Affinity | I |
| Channeling | I |
| Curse of Binding | I |
| Curse of Vanishing | I |
| Flame | I |
| Infinity | I |
| Mending | I |
| Multishot | I |
| Silk Touch | I |
| Fire Aspect | II |
| Frost Walker | II |
| Knockback | II |
| Punch | II |
| Depth Strider | III |
| Fortune | III |
| Looting | III |
| Loyalty | III |
| Luck of the Sea | III |
| Lunge | III |
| Lure | III |
| Quick Charge | III |
| Respiration | III |
| Riptide | III |
| Sweeping Edge | III |
| Thorns | III |
| Unbreaking | III |
| Blast Protection | IV |
| Breach | IV |
| Feather Falling | IV |
| Fire Protection | IV |
| Piercing | IV |
| Projectile Protection | IV |
| Protection | IV |
| Bane of Arthropods | V |
| Density | V |
| Efficiency | V |
| Impaling | V |
| Power | V |
| Sharpness | V |
| Smite | V |
- 9 tradable enchantments with a max level of I
- 4 with a max level of II
- 13 with a max level of III
- 7 with a max level of IV
- 7 with a max level of V
What's the chance of getting each level of enchantment? It's equal. So for Mending, there's a 1/60 chance to get Mending I, because it's the only choice. For Efficiency, there's a 2/3 * 1/40 x 1/5 = 1/200 chance to get Efficiency I, Efficiency II, or Efficiency V.
How do we calculate the coupon collector's problem for un-equal probabilities? Well... it's really complicated[2].
But the answer is that we will have to talk to an average of 933 librarians to get all enchants at max level.
But hey. We can buy Efficiency V for 17 emeralds, if we get the right trade. Are we really okay getting a 64 emerald trade? What if we want only the best trades?
| Enchantment | Level | Cost |
|---|---|---|
| Aqua Affinity | I | 5-19 |
| Bane of Arthropods | V | 17-71 |
| Blast Protection | IV | 14-58 |
| Breach | IV | 14-58 |
| Channeling | I | 5-19 |
| Curse of Binding | I | 10-38 |
| Curse of Vanishing | I | 10-38 |
| Depth Strider | III | 11-45 |
| Density | V | 17-71 |
| Efficiency | V | 17-71 |
| Feather Falling | IV | 14-58 |
| Fire Aspect | II | 8-32 |
| Fire Protection | IV | 14-58 |
| Flame | I | 5-19 |
| Fortune | III | 11-45 |
| Frost Walker | II | 16-64 |
| Impaling | V | 17-71 |
| Infinity | I | 5-19 |
| Knockback | II | 8-32 |
| Looting | III | 11-45 |
| Loyalty | III | 11-45 |
| Luck of the Sea | III | 11-45 |
| Lunge | III | 11-45 |
| Lure | III | 11-45 |
| Mending | I | 10-38 |
| Multishot | I | 5-19 |
| Piercing | IV | 14-58 |
| Power | V | 17-71 |
| Projectile Protection | IV | 14-58 |
| Protection | IV | 14-58 |
| Punch | II | 8-32 |
| Quick Charge | III | 11-45 |
| Respiration | III | 11-45 |
| Riptide | III | 11-45 |
| Sharpness | V | 17-71 |
| Silk Touch | I | 5-19 |
| Smite | V | 17-71 |
| Sweeping Edge | III | 11-45 |
| Thorns | III | 11-45 |
| Unbreaking | III | 11-45 |
Mostly, the price range is based only on the level, but there are a few minor complications:
- Some price ranges go above 64! In the game, these get capped. For this reason, you're 8 times more likely to get Efficiency V for 64 emeralds than any other number.
- Treasure enchantments (in bold above) are double the price of any other enchantment. This is actually a double -- they're never offered for odd numbers of emeralds. Interesting!
The chance of getting an Efficiency V book at the best possible price is: 1/16,500 = 2/3 x 1/40 x 1/5 x 1/55 (because there are 55 possible different prices -- counting ones above 64).
To get every book at the best price, we'd need to talk to 45,594 librarians[2] to get every max-level enchant at the best price.
[1]: I think [2]: Source code here. This uses the inclusion-exclusion principle to estimate set sizes, together with optimizations to take care of repeat probabilities.