C++之随机数

在C++中可以使用  库中的 rand() 函数和  库中的 time() 函数来生成随机数。rand() 函数返回一个在 0 到 RAND_MAX 范围内的随机整数,而 srand() 函数用于设置随机数生成器的种子。

在代码中,srand((unsigned)time(NULL)); 语句用当前时间作为种子来初始化随机数生成器,这样每次运行程序时都会生成不同的随机数序列。

接下来,代码展示了如何生成不同范围的随机整数和随机浮点数:

生成 [a, b) 范围内的随机整数:(rand() % (b - a)) + a。注意这里 b 是不包含的,因为 % 运算符的结果是从 0 到 b - a - 1 的。

生成 [a, b] 范围内的随机整数:(rand() % (b - a + 1)) + a。这里通过增加 1 在范围中包含了 b。

生成 (a, b] 范围内的随机整数:(rand() % (b - a)) + a + 1。这里 a 是不包含的,而 b 是包含的。

生成 [0, 1] 范围内的随机浮点数:rand() / double(RAND_MAX)。这里通过将 rand() 的结果转换为 double 类型并除以 RAND_MAX 来得到一个在 0.0 到 1.0 之间的随机数。

#include 
#include
​
int main() {
    srand((unsigned)time(NULL));
    int a = 1, b = 10;
    // 生成[a,b)的随机数
    //std::cout << (rand() % (b-a)) + a << std::endl;
    
    // 生成[a,b]的随机数
    //std::cout << (rand() % (b-a+1)) + a << std::endl;
    
    // 产生(a, b] 的随机数,可以使用(rand() % (b - a)) + a + 1;
    //std::cout << (rand() % (b - a)) + a + 1 << std::endl;
    
    // 产生[0, 1] 的浮点数,可以使用 rand() / double(RAND_MAX);
    double x=rand() / double(RAND_MAX);
    double y=rand() / double(RAND_MAX);
    double z=rand() / double(RAND_MAX);
    std::cout << "Random point: (" << x << ", " << y << ", " << z << ")" << std::endl;
    system("pause");
    return 0;
}
​

你可能感兴趣的:(C++学习与记录,c++,算法,学习)