Math paradoxes

The Alabama paradox The council gets one more seat. Can a district lose a seat because of it?It can: the small district loses one of its two.

A council splits its seats among three districts in proportion to population and rounds the fractions with the simplest fair rule. It had 10 seats; now it will have 11. It seems an extra seat can only add to someone. So how many seats does the smallest district get then? Lock in your answer, then check it: change the council size yourself, run thousands of random councils and read the explanation.

A council splits its seats among districts of 6, 6 and 2 thousand people by the largest remainder method. With 10 seats the small district has 2; with 11 it has just 1, though there are more seats and the same people. A new seat raises every district's share in proportion to its size, and the big districts' remainders overtake the small one's. In 1880 the Census Office's table gave Alabama 8 seats in a House of 299 and 7 in a House of 300.

Make a guess
2 → 1seats for the small district at 10 → 11
4 → 5for each big one
0such cases for divisor methods
The puzzle

Three districts, ten seats

Splitting seats in proportion is easy as long as the shares are whole. But you cannot cut a seat into pieces, so the fractions have to be rounded somehow. The rule below was devised by Alexander Hamilton, and it looks perfectly fair.

  1. 1

    Three districts

    District A has 6,000 people, district B also 6,000, district C 2,000. That is 14,000 in total.

  2. 2

    The fair share

    A district's fair share is how many seats it would get if seats could be cut: the district's population × the number of seats / the total population. With 10 seats that is 6,000 × 10 / 14,000 ≈ 4.29 for A and B, and 1.43 for C.

  3. 3

    The largest remainder rule

    Each district first gets the whole part of its share: 4, 4 and 1. That is 9 seats. The seats left over go one at a time to the districts with the largest fractional parts. The tenth seat goes to C: it has 0.43, while A and B have only 0.29 each. The result is 4, 4 and 2.

  4. 4

    The question

    The council is enlarged to 11 seats. The populations have not changed, and the rule is the same. How many seats does district C get now?

Intuition says

"There are more seats now, so nobody can end up with fewer. At worst nothing changes"

In fact C gets 1 seat instead of 2. The shares grow: 4.71, 4.71 and 1.57. The whole parts are the same, 4, 4 and 1, but now two seats are left over and the big districts take both: their 0.71 has overtaken C's 0.57.

What we assume

  • The districts' populations do not change; only the number of seats does.
  • Shares are computed exactly, with no rounding along the way.
  • There is no minimum number of seats per district.
  • No two remainders tie in this puzzle, so no lot is needed.
10 seatssharewholeseats
A 6 0004.2944
B 6 0004.2944
C 2 0001.4312
Round 1 · Guess

How many seats does the small district get in a council of 11?

Pick an answer with a button under the slider or type a number. With 10 seats, district C has 2.

Your answer will be compared with the right one here.

Hints

Hard to decide? Open the hints one at a time: the easy one first, then stronger ones.

Next: the solution

Next comes the explanation, with spoilers

The next rounds split seats: you change the council size and the populations yourself, the computer re-splits thousands of random councils, and then comes the explanation. Answer round 1 first, or go on?

You chose to always show all rounds.

Round 2 · Try it yourself

Add seats and watch who loses them

Move the council size, change the districts' populations, add a fourth or fifth district. The table splits the seats by the largest remainder rule and compares them with a council one seat smaller. On the right are all sizes from 1 to 40: the pink cells are those where the added seat takes a seat from someone.

Seats in the council:

Where an added seat hurts someone

Cell h is pink if going from h − 1 to h seats takes a seat from at least one district. A dashed cell means tied remainders at the cut-off, so a lot decides the seat. Click a cell to open that size.

Challenge

Find the paradox with other numbers: change the populations so the ratio is not 3 : 3 : 1, and look for a pink cell. Can you do it with two districts?

Round 3 · Simulation

How often an extra seat hurts someone

The computer builds random councils: 2 to 12 districts with 1 to 100 thousand people each, 10 to 40 seats. For each one it splits the seats, adds one seat and splits again. It does this three ways: by largest remainders and by two divisor methods, D'Hondt and Sainte-Laguë, which many parliaments use to count seats.

Share of councils where someone loses a seat

largest remainders D'Hondt and Sainte-Laguë

By number of districts

Largest remainders: someone lost a seat
–
D'Hondt and Sainte-Laguë: someone lost a seat
–
The smallest district is the loser
–

Check: Python on 500,000 councils per number of districts gives 0% for two districts, 2.4% for three, 3.9% for four, 5.1% for six and 6.2% for twelve (error ±0.1 points). With two districts the paradox never happens, and the divisor methods never produce it at all.

Once you answer, the simulation code appears here so you can run it yourself.

Check it yourself in code

The same simulation, short and with no libraries. Run the JavaScript in your browser console (F12) or in Node; the Python needs only the standard library.

JavaScript
// Random councils: 2 to 12 districts of 1 to 100 thousand people, 10 to 40 seats. Add one seat: does anyone lose a seat?
function largestRemainder(p, h) {
  const P = p.reduce((a, b) => a + b, 0), q = p.map(x => x * h / P), s = q.map(Math.floor);
  const order = p.map((_, i) => i).sort((a, b) => (q[b] - s[b]) - (q[a] - s[a]));
  const left = h - s.reduce((a, b) => a + b, 0);
  for (let k = 0; k < left; k++) s[order[k]]++;            // leftover seats go to the largest remainders
  return s;
}
function dHondt(p, h) {                                    // the next seat goes to the largest p / (s + 1)
  const s = p.map(() => 0);
  for (let k = 0; k < h; k++) { let b = 0; p.forEach((x, i) => { if (x / (s[i] + 1) > p[b] / (s[b] + 1)) b = i; }); s[b]++; }
  return s;
}
console.log('6·6·2 thousand: 10 seats', largestRemainder([6, 6, 2], 10), '11 seats', largestRemainder([6, 6, 2], 11));
const loses = (f, p, h) => { const a = f(p, h), b = f(p, h + 1); return a.some((x, i) => b[i] < x); };
const T = 20000;
for (const n of [2, 3, 4, 6, 8, 12]) {
  let ham = 0, dh = 0;
  for (let t = 0; t < T; t++) {
    const p = Array.from({ length: n }, () => 1 + 99 * Math.random()), h = 10 + Math.floor(31 * Math.random());
    if (loses(largestRemainder, p, h)) ham++;
    if (loses(dHondt, p, h)) dh++;
  }
  console.log('districts', n, '· largest remainders', (100 * ham / T).toFixed(1) + '%', '· D\'Hondt', dh);
}
Python
# Random councils: 2 to 12 districts of 1 to 100 thousand people, 10 to 40 seats. Add one seat: does anyone lose a seat?
import math, random

def largest_remainder(p, h):
    P = sum(p)
    q = [x * h / P for x in p]
    s = [math.floor(x) for x in q]
    order = sorted(range(len(p)), key=lambda i: q[i] - s[i], reverse=True)
    for i in order[:h - sum(s)]:                            # leftover seats go to the largest remainders
        s[i] += 1
    return s

def d_hondt(p, h):                                          # the next seat goes to the largest p / (s + 1)
    s = [0] * len(p)
    for _ in range(h):
        s[max(range(len(p)), key=lambda i: p[i] / (s[i] + 1))] += 1
    return s

print("6·6·2 thousand: 10 seats", largest_remainder([6, 6, 2], 10), "11 seats", largest_remainder([6, 6, 2], 11))

def loses(f, p, h):
    a, b = f(p, h), f(p, h + 1)
    return any(y < x for x, y in zip(a, b))

T = 20000
for n in [2, 3, 4, 6, 8, 12]:
    ham = dh = 0
    for _ in range(T):
        p = [1 + 99 * random.random() for _ in range(n)]
        h = random.randint(10, 40)
        ham += loses(largest_remainder, p, h)
        dh += loses(d_hondt, p, h)
    print("districts", n, "· largest remainders", f"{100 * ham / T:.1f}%", "· D'Hondt", dh)
Round 4 · Explanations

The big districts' remainders grow faster

Intuition thinks about seats, but the rule looks at fractional remainders. A new seat adds to every district a piece in proportion to its population, so the big ones get bigger pieces and overtake the small one in the queue for leftover seats.

In plain wordspictures, analogies, small numbers

“In plain words” is hidden on all puzzles.

The remainder race

One seat, three different pieces

This is not the whole explanation yet, but it is the core. Leftover seats go to those with the biggest "tail" after the whole numbers. One new seat is shared among the districts like everything else, in proportion to population: A and B each get 6/14 ≈ 0.43 of a seat, while little C gets only 2/14 ≈ 0.14. C's tail barely moves, while the big districts' tails jump ahead.

With 10 seats there is one leftover seat, and C takes it with the biggest tail, 0.43. With 11 seats there are two leftovers, but A's and B's tails have grown to 0.71 and overtaken C's 0.57. Both leftover seats go to the big districts, and C is left with its whole part, 1.

Even plainer

From 3 to 4 seats: the small district ends up with nothing

3 seatsseats4 seatsseats
A1.2911.712
B1.2911.712
C0.4310.570

The same 6, 6 and 2 thousand. In a council of three seats each district has one: C takes the third with a tail of 0.43. Add a fourth, and C loses its only seat: 0.57 is less than the big ones' 0.71.

Where there is no paradox

With two districts it is plain rounding

Two districts' shares add up to a whole number, so their tails add up to either 0 or 1. There is at most one leftover seat, and it goes to the one whose tail is more than a half. So each district simply rounds its share to the nearest whole number.

And a share only grows with a new seat, so the rounded share cannot shrink. That is why in round 2 there are no pink cells with two districts, and in the simulation the paradox appears only from three districts on.

Rigoroustables, charts, formulas

“Rigorous” is hidden on all puzzles.

Remainders as a saw

The districts' tails as the council grows from 1 to 21 seats

A and B: +0.43 per seat C: +0.14 per seat C loses a seat

Each dot is the fractional part of a share with h seats. When a share crosses a whole number, the tail drops to zero, so the chart looks like a saw. A's and B's teeth are steep, because their share grows by 3/7 of a seat per step; C's teeth are shallow, just 1/7. The ratio 3 : 3 : 1 repeats every 7 seats, so C loses a seat at 3 → 4, 10 → 11, 17 → 18 and every seven seats after that.

The algebra

A share grows by p/P, not by the same amount

Let a district have p people out of P, with h seats. Its share is q = p · h / P. Add a seat: q grows by p/P, the district's share of the population. All shares grow by the same percentage, but in absolute terms the big ones grow more.

All the shares add up to h, so the number of leftover seats equals the sum of the tails. A district loses a seat when its whole part has not grown, while the number of districts with a bigger tail is no longer smaller than the number of leftover seats. For that someone else has to overtake it in the queue, and only a district whose share grows faster, that is a bigger district, can overtake it.

The share's bounds

What this method does guarantee

Largest remainders never give a district less than its share rounded down or more than its share rounded up. This is the "quota rule": 1.57 can only become 1 or 2, never 0 or 3. The method can break monotonicity, but it never strays outside the share's bounds.

So with 11 seats, C's 1 seat is formally within bounds: its share is 1.57. What is broken is something else: with 10 seats, when its share was smaller, 1.43, it had 2.

For formula lovers

Shares, tails and the queue

The share of district i with population pi for h seats and total population P, and its growth from one new seat.

qi(h)=pihP,qi(h+1)−qi(h)=piP

Each district gets the whole part, and the number of leftover seats k equals the sum of the fractional parts.

si=⌊qi⌋+[i ∈ top k],k=h−∑j⌊qj⌋=∑j{qj}

The example 6, 6, 2 thousand (P = 14): the shares at 10 and 11 seats.

q(10)=(307,307,107)→(4,4,2),q(11)=(337,337,117)→(5,5,1)

A divisor method: find one number d and round each pi/d by a fixed rule (D'Hondt: down; Sainte-Laguë: to the nearest). More seats means a smaller d, so no pi/d shrinks.

si=round(pid),∑isi=h

Largest remainders do not use one divisor for everyone; they build a separate queue of tails for each h. The queue at h + 1 can turn out quite different from the one at h, and that is where the paradox comes from.

Deepergeneralisations, theory, history

“Deeper” is hidden on all puzzles.

Divisor methods

No paradox, but a different price

D'Hondt (called Jefferson's method in the US), Sainte-Laguë (Webster's method) and Huntington–Hill divide each district's population by a common divisor and round. They can also be run one seat at a time: each next seat goes to the district with the largest p/(s + 1) for D'Hondt or p/(2s + 1) for Sainte-Laguë, where s is the seats it already has. A council of h + 1 seats is a council of h seats plus one more, so such a method cannot take a seat from anyone. This property is called house monotonicity.

The price is the quota rule. Four districts with 20, 5, 5 and 5 thousand, 10 seats: the big one's share is 5.71, yet D'Hondt gives it 7, more than its share rounded up. Largest remainders would give it 6, within its bounds.

The theorem

Balinski and Young: you can't have it all

Michel Balinski and Peyton Young proved that no apportionment method can always respect the quota rule and at the same time never produce the population paradox (where a faster-growing district loses a seat to a slower-growing one). With four or more districts it is impossible in principle. They set out this theory in their 1982 book "Fair Representation".

So choosing a method means choosing which unfairness to put up with. Divisor methods are monotone but sometimes stray outside the share's bounds. Largest remainders stay within bounds but suffer from the Alabama, population and new states paradoxes (round 5).

History · recomputed

1880: a House of 299 and of 300 seats

After the 1880 census, Charles Seaton, chief clerk of the US Census Office, computed the House apportionment by Hamilton's method for every size from 275 to 350. With 299 seats Alabama had 8; with 300, only 7. We recomputed this from the census population of the 38 states (49,371,340 people in all; Nevada gets the 1 seat the Constitution guarantees, though its share is 0.38):

Statepopulationshare, 299seatsshare, 300seats
Alabama1 262 5057.64687.6717
Texas1 591 7499.64099.67210
Illinois3 077 87118.6401818.70219

With 299 seats, 20 seats were left over after the whole parts, and Alabama, with a tail of 0.646, took the last, twentieth one, ahead of Illinois and Texas with their 0.640. At 300, Alabama's tail grew by only 0.026, Texas's by 0.032 and Illinois's by 0.062. Both overtook Alabama. Meanwhile three states' shares crossed a whole number, so there were 18 leftover seats instead of 20, and Alabama ended up nineteenth in the queue. The discovery caused an uproar in Congress; in 1911 the House switched to Webster's method, and since 1941 it has used Huntington–Hill.

Round 5 · Going further

Two more paradoxes, the Verkhovna Rada and the Bundestag

Largest remainders can punish a district not only for a new seat, but also for its own growth or for a new neighbour. And real elections still count seats by this rule.

Three paradoxes of one method

1 · The maths

Population growth and a new district hurt too

The population paradox. District A grows, B stays the same, yet a seat moves from A to B. The cause is the same: every share is computed from the total population, which grew because of the third district, so the tails got re-sorted. According to Wikipedia and James Stein's book, in 1900 Virginia lost a seat to Maine this way, even though it was growing faster.

The new states paradox. A new district joins the council together with its fair share of seats. The old districts gave nothing up, yet a seat moves between them. In 1907 Oklahoma joined the US with 5 new seats, and the recount took a seat from New York and gave it to Maine.

2 · The logic

A whole can't be split into whole parts fairly in every sense

Each requirement sounds obvious: everyone gets their share rounded down or up; more seats hurt nobody; whoever grows faster does not lose to someone growing slower. The Balinski–Young theorem says they cannot all hold together. This is not a flaw of one particular rule but a property of the task itself: fractions cannot be rounded so that the rounding behaves like the fractions.

Voting is similar: the Condorcet paradox shows that even the majority's opinion cannot always be put into a fair order. And parts and wholes that behave differently also appear in Simpson's paradox and the Will Rogers phenomenon, where the of all groups rise while the people stay the same.

3 · In practice

The Verkhovna Rada in 2019: 225 seats by largest remainders

Under Ukraine's 2011 law on the election of people's deputies (Art. 98), used for the 2012, 2014 and 2019 Rada elections, the 225 list seats are split among the parties that cleared 5%. The electoral quota is the votes for these parties divided by 225; each party gets the whole part of its votes divided by the quota, and the remaining seats go one at a time to the parties with the largest fractional remainders. The votes below are the Central Election Commission's official results; check them yourself.

The Bundestag split seats among parties by the Hare–Niemeyer method, that is largest remainders, from the 1987 election. In 2008 a law replaced it with the Sainte-Laguë–Schepers method to avoid the paradoxes, and it was first used at the election of 27 September 2009. If you split a whole into whole parts in a spreadsheet (a budget across departments, laptops across teams) and the total may change, use a divisor method: an extra unit will then never shrink anyone's part.

Bonus · Fun facts

Things to tell your friends

299 → 300

Alabama and the extra seat

The Census Office's table after 1880 showed that if the House had 300 seats instead of 299, Alabama would get one seat fewer, 7 instead of 8. That is where the paradox gets its name.

357

Colorado after 1900

After the 1900 census the Bureau computed Houses of 350 to 400 seats. Colorado got 3 seats at every size except one: at 357, only 2.

1907

Oklahoma and New York

Oklahoma became a state, and the House grew by its 5 seats. The recount took one seat from New York and gave it to Maine, though neither state had changed anything.

0.011

One seat in 2019

In the 2019 Verkhovna Rada election the last leftover seats were assigned by remainders. Batkivshchyna, with a remainder of 0.511, got a seat; Opposition Platform – For Life, with 0.500, did not.

1941

The method still in use

Since 1941 the US House has split its 435 seats among the states by the Huntington–Hill method. It is a divisor method, and the Alabama paradox cannot happen in it.

2009

The Bundestag changed the rule

From 1987 the Bundestag split seats by largest remainders (the Hare–Niemeyer method). Because of the paradoxes it was replaced in 2008 by the Sainte-Laguë–Schepers method, first used at the 2009 election.

Discussion

What do you think?

Share your own explanation, an objection or a variant of the puzzle. You need a GitHub account to comment.

Is “School maths” the right level for this puzzle?

Thank you! This helps set the levels right.

Newsletter

New puzzles, explanations and discussions

I keep adding new puzzles, new ways to explain them and write-ups of the discussions they start. Leave your email and I'll write when something new is out. No spam, one-click unsubscribe.

The sign-up form will appear here soon.