利用C++模拟伯努利分布,生成0,1数组
时间: 2024-09-06 16:01:59 浏览: 45
C++按照正态分布来排列整型数组元素
模拟伯努利分布生成0和1的数组,可以通过使用C++中的随机数生成器和分布类来实现。伯努利分布是一种离散概率分布,只取两个值(通常为0和1),其中每个值的概率分别是1-p和p。下面是一个简单的示例代码,展示如何使用C++11标准库中的功能来实现这一模拟:
```cpp
#include <iostream>
#include <random>
#include <vector>
int main() {
// 定义伯努利分布的概率参数,例如0.6
const double p = 0.6;
// 创建随机数发生器
std::random_device rd;
std::mt19937 gen(rd());
// 创建伯努利分布对象,指定概率p
std::bernoulli_distribution dist(p);
// 指定数组的大小
const int size = 10;
// 生成伯努利分布的随机数组
std::vector<int> bernoulliArray(size);
for (int i = 0; i < size; ++i) {
bernoulliArray[i] = dist(gen) ? 1 : 0;
}
// 输出数组内容
for (int num : bernoulliArray) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
这段代码首先定义了一个伯努利分布的概率参数`p`,然后创建了一个随机数发生器`gen`和一个伯努利分布`dist`。通过循环,我们使用`dist`对象生成0和1的数组,并将结果存储在`bernoulliArray`中。最后,程序输出这个数组。
阅读全文