[C] 產生亂數

傳回一個 0 ~ RAND_MAX 的整數, 以 nano second 為 seed, 需要 librt (-lrt)

#include <stdlib.h>
#include <time.h>

long gen_rand(void)
{
    struct timespec tv;
    clock_gettime(CLOCK_MONOTONIC, &tv);
    srandom( tv.tv_nsec );

    return random();
}

傳回一個 0 ~ 1 的小數

double rand(void)
{
    return ( (double) gen_rand() / (double) RAND_MAX );
}

Last updated