我們可以使用CRT中的rand函數來產生一個隨機數。在調用rand前,請使用srand()函數設定種子,這個函數能觸發隨機數發生器(RNG)產生一個相對特定的值(主要是根據當前的時間)。
代碼:
int randNumbersrand(time(NULL))randNumber = rand();
在Windows裡,我們還可以選擇使用Cryptography中的CryptGenRandom函數,這函數可以在緩衝區中填入cryptographically隨機位元組。
一個產生0-100的隨機數的代碼:
#include"stdafx.h#includ <iostream>#includ <windows.h>usingnamespace std#pragmacomment(lib,"crypt32.lib"#includ <Wincrypt.h>#define MY_ENCODING_TYPE (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)int main(){ //-------------------------------------------------------------------- // Declare and initialize variables. HCRYPTPROV hCryptProv; BYTE pbData //------------------------------------------------------------------- // Acquire a cryptographic provider context handle. if(CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, 0)) { printf("CryptAcquireContext succeeded. \n"); } else { printf("Error during CryptAcquireContext!\n"); } //-------------------------------------------------------------------- // Generate a random BYTE. if(CryptGenRandom(hCryptProv, 1, &pbData)) { printf("Random number is: %d.\n", ((int)pbData) * 100 / 255); } else { printf("Error during CryptGenRandom.\n") exit(1); } //------------------------------------------------------------------- // Clean up if(hCryptProv) { if (!CryptReleaseContext(hCryptProv, 0)) { printf("Failed CryptReleaseContext\n"); } } return 0;