SunOS や FreeBSD には rand(), srand() の改良版である random(), srandom() がある。値の範囲は から で、 周期はずっと長い。使い方は大体同じである。 ただし、random() の型は long である。
/* * test-random.c */ /* * random() は * 0 から 2^{31}-1 までの範囲の疑似乱数を返す。 * man 3 random 参照。 * rand() よりも質の良い疑似乱数を返す。計算速度は 2/3. */ #include <stdio.h> #include <stdlib.h> int main() { int i, n; n = 10; printf("start\n"); for (i = 0; i < n; i++) printf("%ld\n", random()); srandom(3); printf("start (seed=3)\n"); for (i = 0; i < n; i++) printf("%ld\n", random()); srandom(1); printf("start (seed=1)\n"); for (i = 0; i < n; i++) printf("%ld\n", random()); return 0; } |
桂田 祐史