> For the complete documentation index, see [llms.txt](https://applezu.netdpi.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://applezu.netdpi.net/linux-prog/generate_random_number.md).

# \[C] 產生亂數

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

```c
#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 的小數

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