Also, I am pretty sure that, besides being slow, `proc rand(r: var Rand; max:
Natural)` is also buggy/biased. Git VC history says it used to be correct, but
then someone hastily re-did some logic to make it range-inclusive. Briefly,
if x <= randMax - (randMax mod Ui(max)):
return int(x mod (uint64(max) + 1u64))
Run
should be
if x < randMax - (randMax mod (Ui(max) + Ui(1))):
return int(x mod (Ui(max) + Ui(1)))
Run
This does have follow-on impact for many derived algorithms, but it would be
better still to just replace it with my faster version above, filled out for
JavaScript BigInts & 32-bit fallbacks a la `hashes.nim:proc hash(int)`.