基本隨機數生成

函式 rand() 可用於生成 0RAND_MAX 之間的偽隨機整數值(包括 0RAND_MAX)。

srand(int) 用於為偽隨機數生成器播種。每次將 rand() 播種到同一種子時,它必須產生相同的值序列。它應該只在播放 rand() 之前播種一次。每次希望生成一批新的偽隨機數時,不應重複播種或重新播種。

標準做法是使用 time(NULL) 的結果作為種子。如果隨機數生成器需要具有確定性序列,則可以在每個程式啟動時為生成器設定相同的值。這通常不是釋出程式碼所必需的,但在除錯執行中非常有用,可以使錯誤重現。

建議始終為生成器播種,如果不播種,它的行為就好像是用 srand(1) 播種的。

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

int main(void) {
    int i;
    srand(time(NULL));
    i = rand();

    printf("Random value between [0, %d]: %d\n", RAND_MAX, i);
    return 0;
}

可能的輸出:

Random value between [0, 2147483647]: 823321433

筆記:

C 標準不保證產生的隨機序列的質量。在過去,rand() 的一些實現在生成的數字的分佈和隨機性方面存在嚴重問題。不建議將 rand() 用於嚴重的隨機數生成需求,如加密。