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