2.4 random(), srandom()

SunOS や FreeBSD には rand(), srand() の改良版である random(), srandom() がある。値の範囲は $0$ から $2^{31}-1$ で、 周期はずっと長い。使い方は大体同じである。 ただし、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;
}

桂田 祐史
2017-04-29