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;
}
|
桂田 祐史