C++中生成隨機數的函數有哪些?
在C++中,生成隨機數的常用函數主要有以下幾種:
rand():這是C和C++標準庫中的一個函數,它返回一個在0到RAND_MAX之間的隨機整數。RAND_MAX在標準庫中已定義,其值通常為32767。但是,rand()函數生成的隨機數序列具有固定的周期,因此不是真正的隨機數。
srand(unsigned int seed):這個函數用于設置rand()函數的種子值。種子值會影響rand()函數生成的隨機數序列。通常,我們會用當前時間作為種子值,以便每次運行程序時生成不同的隨機數序列。
rand() % n:這個表達式用于生成一個0到n-1之間的隨機整數。使用取模運算符%可以確保生成的隨機數在指定范圍內。
C++11引入的<random>庫:這個庫提供了許多生成隨機數的新功能,包括生成浮點數、在指定范圍內生成隨機數、生成特定分布的隨機數等。<random>庫中的函數通常比rand()函數生成的隨機數質量更高。
下面是一些示例:
使用rand()和srand()生成0到9之間的隨機整數:
cpp
#include <cstdlib> // 包含rand()和srand()函數
#include <ctime> // 包含time()函數
int main() {
srand(time(0)); // 使用當前時間作為種子值
int random_num = rand() % 10; // 生成0到9之間的隨機整數
return 0;
}
使用<random>庫生成在指定范圍內的隨機整數:
cpp
#include <random>
#include <iostream>
int main() {
std::random_device rd; // 使用真正的隨機數生成器來獲取種子值
std::mt19937 gen(rd()); // 使用Mersenne Twister算法生成隨機數
std::uniform_int_distribution<> dis(1, 10); // 指定生成的隨機數的范圍為1到10
int random_num = dis(gen); // 生成隨機數
std::cout << random_num << std::endl;
return 0;
}






















