Added Marsaglia's UNI64 (buggy seeding as in the original).

The bug is in Marsaglia's own code:
        x = seed1;
        y = seed2;
        for (j=1; j<54; j++){
                x=(6969*x) % 65543;
                y=(8888*x) % 65579;
                /* get a single bit out of x and y */

The value of y is never used; I've kept it like that to make
the tests pass.
The proper thing to do would be "if len($DEBUG) > 0..." of course.
So much time wasted trying to understand why tests were failing...
ops
Added b32MWC/b32KISS

The internal array is so big that seeding takes 10s of seconds,
and testing 1e9 values in the original would take (see for yourself).

PS
Here's a small vim script I used to pick for/while:

" b32MWC => which is faster, "for i in range(len(Q))" or "while i < lenQ"?
" A: setseed_for() is measurably faster (the seed is Q[i]=i).
" TODO try on PC with less memory! it takes ~400MB! (=> swap!)
function! s:setseed()
        let i = 0
        let n = len(s:Q)
        while i < n
                let s:Q[i] = i
                let i += 1
        endwhile
endfunction
function! s:setseed_for()
        let i = 0
        for i in range(len(s:Q))
                let s:Q[i] = i
        endfor
endfunction

" if __creating__ the array takes too long you'll need more RAM :)
let s:T0 = reltime()
let s:Q = range(4194304)
echomsg printf("Q=range(%d) %s", len(s:Q), reltimestr(reltime(s:T0)))

let s:T0 = reltime()
call s:setseed()
echomsg printf("while(Q[i]=i) took %s (len=%d)", reltimestr(reltime(s:T0)), len(s:Q))

let s:T0 = reltime()
call s:setseed_for()
echomsg printf("for(Q[i]=i) took %s (len=%d)", reltimestr(reltime(s:T0)), len(s:Q))