So I noticed a discrepancy while reproducing these statistically. Vote-for-1 tends to be too high, and Vote-for-(n-1) tends to be too low:

fptp has same problem Effectiveness,_1000_voters,_100000_iterations.png

(Vote-for-(n-1) is essentially Anti-plurality voting. )

These should be the same, according to him:

It is interesting to observe that the vote-for-k and vote-for-(n-k) voting systems are equally effective.

Plotting just those two, it seems to just be a consequence of Weber calculating for infinite voters vs me simulating finite numbers of voters:

10 voters, 100,000 iterations:

Effectiveness,_10_voters,_100000_iterations.png

100 voters, 100,000 iterations:

Effectiveness,_100_voters,_100000_iterations.png

1,000 voters, 100,000 iterations:

Effectiveness,_1000_voters,_100000_iterations.png

100,000 voters, 100,000 iterations (took 3 hours):

Effectiveness,_100000_voters,_100000_iterations.png

(Standard and Vote-for-1 are the same thing, but implemented differently, so I was plotting both to make sure there wasn't a bug in one.)

I don't really understand why this happens, but good to keep in mind that number of voters does matter in these kinds of simulations.