SunOS, FreeBSD には、 48 ビット整数演算を利用した疑似乱数発生関数が備わっている。 例えば drand48() は、 double 型の、 内の一様疑似乱数を返す。
/* * test-drand48.c */ /* * drand48() は [0,1) の範囲の疑似乱数を返す。 */ #include <stdio.h> #include <stdlib.h> /* drand48() */ #include <sys/types.h> #include <sys/time.h> double drand48(); int main() { int i, n; time_t tloc; long int myseed; n = 10; printf("start\n"); for (i = 0; i < n; i++) printf("%f\n", drand48()); time(&tloc); myseed = tloc; srand48(myseed); printf("start (seed=%ld)\n", myseed); for (i = 0; i < n; i++) printf("%f\n", drand48()); return 0; } |
桂田 祐史