dns_random() from djbdns -- slow
Minor details: comment, slightly better random seed.

The issue with incrementing the counter looks like a manually unrolled
loop which is right 99% of the times, except that the particular line
looks like copypasta from djbRANDOM.vim (does it have a name?),
where in fact the state **is** four words long.

About initialization... well, it's not like vim needs anything fancy;
multiplying by nine is an invertible operation, so it's not indecent;
I tried to squeeze string(v:) into a 128 bytes array like that
| sort | uniq
=> 105 distinct values, including control characters (ascii<32),
which is what I would have been concerned with if it had been anything
important, since of course v:, b: etc will mostly be filled with
characters in a-ZA-Z
Missed an invalid seed in marsaglia.vim; corrected the wikipedia entry

The funny thing is that even Marsaglia forgets to mention them in his
posts, only warning to avoid zero :)
Anyway, the problem is that the algorithm used is a 16-bit MWC in
disguise, that is, m_w (and m_z) is actually a compact encoding for
MWC {
    x[r];
    carry
}

with r=1 and all numbers being 16 bits wide; rather than keeping two
pesky uint16 around, do the computations using 32 bits math, going back
to 16 bit and starting all over again *every* *single* *time*,
prof Marsaglia decided he'd encode those numbers as the high/low part
of a 32 bit number (which is mathematically sound btw).
The problem is that a mwc has **two** fixed points, one being all
zeroes, and the other being when all x's equal b-1 (here: 0xFFFF)
and the carry is a-1 (the multiplier -- that's why the numbers are in
hexadecimal).

Shame on me for not noticing before!
KLUDGE: seed SUPRKISS somehow (without being slow)
RC4; minimal fuff, no /dev/urandom
Added Marsaglia's LFIB4, SWB -- mostly for speed

Prof Marsaglia's paper describing AWC/SWB is about as pleasant as a
mathematical paper can be; L'Ecuyer criticized these generators (*)
in a way that's really, really surprising, at least imho.

(*) Without any effort at making the paper readable, unfortunately...