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;
}