c++的均匀随机数如何生成
时间: 2024-09-06 10:08:17 浏览: 41
在 C++ 中,生成均匀随机数通常使用 `<random>` 标准库。以下是一个简单的例子,展示如何生成范围在 [0, 1) 内的伪随机浮点数:
```cpp
#include <iostream>
#include <random>
int main() {
// 初始化一个随机数引擎
std::default_random_engine generator(std::chrono::system_clock::now().time_since_epoch().count());
// 定义一个均匀分布的随机数生成器
std::uniform_real_distribution<double> distribution(0.0, 1.0);
// 生成并打印随机数
double random_number = distribution(generator);
std::cout << "Random number between 0 and 1: " << random_number << std::endl;
return 0;
}
```
在这个例子中,`std::default_random_engine` 用于创建随机数源,`std::uniform_real_distribution` 则表示生成的随机数分布在指定范围内。你可以根据需要调整这个范围。
相关问题
C++使用随机数生成正整数
在C++中,你可以使用 `<cstdlib>` 或 `<random>` 标准库来生成随机正整数。这里我们主要看两个方法:
1. **使用 `rand()` 函数** (C风格):
```cpp
#include <cstdlib>
#include <ctime>
// 首先需要设置随机数种子(确保每次程序启动时生成不同的随机数)
std::srand(std::time(0));
// 使用 rand() 函数生成0到RAND_MAX之间的随机数(包含0,但通常大于INT_MAX)
int randomInteger = std::rand() % RAND_MAX + 1;
```
2. **使用 `<random>` 库** (现代C++11及以上):
```cpp
#include <iostream>
#include <random>
std::default_random_engine generator; // 创建随机引擎
std::uniform_int_distribution<int> distribution(1, 100); // 定义均匀分布,范围从1到100
// 生成一个随机数
int randomInteger = distribution(generator);
```
在这个现代方法中,`uniform_int_distribution` 可以让你更精确地控制随机数的范围,并且`default_random_engine` 提供了更好的随机性和性能。
c++ 生成均匀分布随机数
生成均匀分布的随机数可以使用C++的random库来实现。可以通过以下步骤来生成均匀分布的随机数:
1. 准备随机数生成引擎,可以使用默认引擎default_random_engine。
2. 创建均匀分布的随机数生成器实例,可以使用uniform_int_distribution或uniform_real_distribution,根据需要生成整数或浮点数。
3. 传入引擎利用生成器生成随机数。
下面是一个生成均匀分布随机数的示例代码:
```cpp
#include <iostream>
#include <random>
#include <vector>
using namespace std;
int main() {
// 设置随机数引擎
const int SEED = 666;
default_random_engine dre(SEED);
// 1-10均匀分布的随机数生成器
uniform_int_distribution<int> d(1, 10);
// 创建一个vector用来接收随机数
const int LEN = 20;
vector<int> v;
v.reserve(LEN);
// 生成随机数并存入vector
for (int i = 0; i < LEN; i++) {
v.push_back(d(dre));
}
// 打印结果
cout << "RESULT:" << endl;
for (int i = 0; i < LEN; i++) {
cout << v[i] << " ";
}
cout << endl;
return 0;
}
```