[ 簡単な説明 ]
1〜nの大きさの乱数を生成します。 |
/* lrnd1.c */ #include "longint.h" LINT lrnd1(LINT n) { LINT a; int i; a.sign = n.sign; do { i = a.len = n.len; while(--i) a.num[i] = urnd1() * BASE; i = a.len; do { a.num[i] = urnd1() * (n.num[i] + 1); if(a.num[i] < n.num[i]) break; } while(lcmp(a, n) >= 0); while(a.num[a.len] == 0) a.len--; } while(a.len == 0); a.num[0] = 0; return a; } |