2.3 drand48(), lrand48(), srand48()

SunOS, FreeBSD には、 48 ビット整数演算を利用した疑似乱数発生関数が備わっている。 例えば drand48() は、 double 型の、$[0,1)$ 内の一様疑似乱数を返す。

/*
 * 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;
}

桂田 祐史
2017-04-29