nrand.c 262 B

123456789101112131415161718192021
  1. #include <u.h>
  2. #include <libc.h>
  3. #define MASK 0x7fffffffL
  4. int
  5. nrand(int n)
  6. {
  7. long slop, v;
  8. if(n < 0)
  9. return n;
  10. if(n == 1)
  11. return 0;
  12. /* and if n == 0, you deserve what you get */
  13. slop = MASK % n;
  14. do
  15. v = lrand();
  16. while(v <= slop);
  17. return v % n;
  18. }