Thanks for the great description, Remy :-)
I'm a bit surprised, and overly joyful that my submission actually made it through!

As I already wrote in the README: There is a way to "cheat" in such a way that nobody can realistically notice. If someone wants to be walked through the maths, raise your hand. Otherwise I'm going to be too lazy :stuck_out_tongue:

Ben - (everything assumes a 38 number USA, double-zero wheel)... On the first spin, the odds of a number coming up is nearly 100% (it would be 100% if we exclude the chance various "problems" such as the ball leaving the wheel - rare, but it does happen). Now for a second spin (fair wheel), the odds of the same number coming up are 1/38 [because we don't care what the first number was, only if they are the same]. This is radically different than the article (assuming I did not misread while having my first cup of coffee) stating odd of 1/1444 - (aka 1/(n*n)

However, even the requirements don't want a fair roulette wheel. Both implementation and documentation (so this is "veritable") describe that, if a duplicate is about to happen, we spin the wheel again.
So in order to actually see a duplicate, the following must happen:

First call to FewRunsWheel.operator()(). This calls FairWheel.operator()(). Returns a number, let's say [s]42[/s] err 23 for example. Return that number.

Second call to FewRunsWheel.operator()(). Calls FairWheel.operator()(), which returns 23 again. FewRunsWheel detects that, and drops the result, instead calling (and then returning blindly) again: FairWheel.operator()(), returning 23 a third time

I think we can agree that FewRunsWheel.operator()() returning the same number three times in a row has probability 1/(n*n)

Anyway, since these are kind-of but not really obfuscated coding contests, I propose that they instead be dubbed obfuscated requirements contests. Somewhere, in the vast jumbled expanse between "this part is just for flavor" and "it must do this", there is an actual requirement. Can you find it?!