使用 /dev/random C 裡面使用 rand() 可以產生變數。 但是每次傳回的解果都是一樣的。 所以我們可以加上 srand(time(0)),藉由時間來取得亂數總子。 但這樣的亂數種子每秒變動一次。所以如果需要在一秒之內取得多個亂數則會有問題。 這時可以使用 /dev/random 和 /dev/urandom。 簡單來說 /dev/random 的 random pool 是由系統 IRQ 來取得。 當 random pool 不夠時,取值得過程會等待直到有足夠的值產生。 /dev/urandom 則不會有這樣的問題。 簡單程式如下 #include int main() { FILE *fp; int randno; if ((fp = fopen("/dev/urandom", "r")) == NULL) { fprintf(stderr, "Error! Could not open /dev/urandom for read\n"); return -1; } randno = fgetc(fp); fclose(fp); return 0; }