c++ std::rand()
时间: 2023-09-09 18:08:11 浏览: 161
在 C++ 中,可以使用 `std::rand()` 函数来生成伪随机数。该函数在 `<cstdlib>` 头文件中定义,可以生成一个 0 到 `RAND_MAX` 之间的整数,其中 `RAND_MAX` 是一个常量,通常是 32767。
下面是一个简单的例子,使用 `std::rand()` 函数来生成一个 0 到 99 的随机整数:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
int main() {
std::srand(std::time(nullptr)); // 使用当前时间作为种子
int random_num = std::rand() % 100;
std::cout << "Random number: " << random_num << '\n';
return 0;
}
```
需要注意的是,`std::rand()` 函数生成的是伪随机数,因此在每次运行程序时生成的随机数序列可能是不同的,但在同一次运行中生成的随机数序列是确定的。为了获得更好的随机性,可以使用 `std::srand()` 函数设置随机数生成器的种子,例如使用当前时间作为种子。
相关问题
std::default_random_engine 与 std::rand() 的区别
std::default_random_engine 是 C++11 中引入的伪随机数生成器,它比 std::rand() 更加灵活和可控。std::default_random_engine 提供了多种分布函数,可以生成不同分布的随机数序列。同时,它的随机数生成算法也更加复杂和难以预测,生成的随机数更加均匀和随机。
std::rand() 是 C 标准库中的随机数生成函数,它使用的是线性同余算法,生成的随机数序列存在周期性和统计规律,容易被预测和破解。同时,它只能生成均匀分布的随机数序列,无法生成其他分布的随机数。
因此,在 C++11 及以后的版本中,建议使用 std::default_random_engine 来生成随机数序列,以获得更好的随机性和可控性。
std::rand() 随机数设置范围
"std::rand()" 函数生成的随机数范围是在 0 到 "RAND_MAX" 之间,其中 "RAND_MAX" 是一个预定义的常量,它表示 "rand()" 函数可以生成的最大随机数。在实际使用中,您可以使用取模运算符将生成的随机数限制在您需要的范围内。例如,如果您需要生成 0 到 99 之间的随机整数,可以使用以下代码:
```c++
#include <cstdlib>
#include <iostream>
int main() {
// 生成一个介于 0 到 99 之间的随机整数
int random_number = std::rand() % 100;
// 输出随机数
std::cout << "Random number: " << random_number << std::endl;
return 0;
}
```
在上面的代码中,我们将 "rand() % 100" 的结果赋值给 "random_number",这将生成一个介于 0 到 99 之间的随机整数。请注意,这种方法会使生成的随机数偏向于较小的值,因为 "RAND_MAX" 可能不是 100 的倍数,这样就会舍去一些较大的随机数。如果您需要更均匀地生成随机数,可以使用一些其他的方法,例如分段映射或使用更高级的随机数生成算法。
阅读全文