1*d9306527SDavid du Colombier #include <u.h> 2*d9306527SDavid du Colombier #include <libc.h> 3*d9306527SDavid du Colombier 4*d9306527SDavid du Colombier #define MASK 0x7fffffffL 5*d9306527SDavid du Colombier 6*d9306527SDavid du Colombier long lnrand(long n)7*d9306527SDavid du Colombierlnrand(long n) 8*d9306527SDavid du Colombier { 9*d9306527SDavid du Colombier long slop, v; 10*d9306527SDavid du Colombier 11*d9306527SDavid du Colombier if(n < 0) 12*d9306527SDavid du Colombier return n; 13*d9306527SDavid du Colombier slop = MASK % n; 14*d9306527SDavid du Colombier do 15*d9306527SDavid du Colombier v = lrand(); 16*d9306527SDavid du Colombier while(v <= slop); 17*d9306527SDavid du Colombier return v % n; 18*d9306527SDavid du Colombier } 19