C++ bernoulli_distribution() 函数

2024 年 8 月 29 日 | 5 分钟阅读

在本文中,我们将讨论 C++ 中的 **_bernoulli_distribution_** 函数。它是相同的旧 **_<random>_** 库的一部分。它允许生成具有伯努利分布的随机数。此分布包含两个事件,可以常规命名:例如,成功和失败(p 为机会,q = 1 - p)。

**_bernoulli_distribution_** 函数在 <random> 头文件中使用,属于 C++ STL。它用于生成遵循伯努利分布的随机量。此功能与随机数引擎(例如 **_std::default_random_engine_**)一起使用,以随机创建数字。为了使用 bernoulli_distribution 函数,我们首先需要在程序中包含 <random> 头文件。

可以使用以下语法创建新实例:

在此问题中,**_p_** 代表成功的概率。它必须是介于 0 和 1.0 之间的值。如果 **_p = 0_**,生成的随机数将重复为假(失败),如果 p = 1,生成的随机数将始终为真(成功)。

我们需要一个随机数生成器来从随机的伯努利分布中创建数字。

我们可以使用继承自 **_<random>_** 库的 **_default_random_engine_** 类的 **_std:binomial_** 类。

示例

让我们举一个程序来实现在 C++ 中实现 **_bernoulli_distribution_** 函数。

输出

0 1 0 1 1 0 1 1 

说明

  • 在此示例中,我们包含两个用于输入/输出函数的文件和一个用于随机数生成函数的文件(#include <iostream> 和 #include <random>)。
  • **_main()_** 函数是程序的入口点。
  • 在 main() 函数内部,使用 **_std::random_device_** 获取一个随机种子,该种子生成初始随机引擎数字序列 (std::mt19937)。
  • **_std::bernoulli_distribution_** 是一个元组,其成功概率为 0.4。
  • **_“for 循环”_** 迭代八次。
  • 在每次迭代中,我们使用随机数引擎实例化 bernoulli_distribution,该引擎用于创建随机布尔值。
  • 之后,生成的布尔值显示在命令行上。
  • 循环终止后,程序结束。

示例

让我们再举一个程序来实现在 C++ 中实现 **_bernoulli_distribution_** 函数。

输出

false ****
true ***************

说明

  • 在此示例中,我们实现伯努利分布,通过给出概率参数来生成随机值。
  • 之后,伯努利分布通常用于表示只有两种可能结果的二元情况,例如成功或失败。在程序中,随机设备 (**_std::random_device_**) 负责使用随机值来为随机数生成器 (std::mt19937) 播种。之后,它强制数字的随机性;因此,它们是真正的随机数。**_mt19937_** 生成器是当今已知的主要伪随机数生成器算法之一。之后,使用 0.75 的概率初始化 **_std::Bernoulli_** 分布。
  • 结果是,75% 的时间获得真值,其余 25% 的时间为假值。最后,程序启动一个循环,通过伯努利分布和 **_rand()_** 打印 10,000 个随机值。每个计算值都被声明为索引,以使位置改变直方图映射的计数器数量。

C++ 中 bernoulli_distribution() 函数的优点

C++ 中的 **_bernoulli_distribution()_** 函数有几个优点。一些主要优点如下:

  • **简单性:** **_std::bernoulli_distribution_** 函数实现了快速清晰的机制,以输出具有伯努利分布的随机布尔变量。它是 C++ 标准库的一部分,易于访问并得到广泛支持。
  • **灵活性:** C++ 中使用的 **_std::bernoulli_distribution_** 函数可以参数化为成功概率 (p)。此函数决定了我们如何根据实际需求设置概率。通过使用现有的二项式函数,我们可以获得具有不同成功概率的随机布尔值,而无需实现分布本身。
  • **与 <random> 库集成:** 该库的第二个组件包含随机数生成器 (**_std::default_random_engine_**) 和其他分布函数,为用户提供了处理不同随机化方法的极大灵活性。
  • **一致性和可靠性:** 操作 **_std::bernoulli_distribution_** 保证生成的布尔值具有给定概率参数 (p) 的伯努利分布。它确保生成的值符合预期,并且可以在模拟、实验或任何其他需要随机二进制值的领域中可靠地使用。
  • **性能:** 包含 std::bernoulli_distribution 函数的 <random> 库经过优化,可提供高效优质的随机数生成。它使 std::bernoulli_distribution 函数能够快速生成大量的整数随机值。

结论

总之,伯努利分布用于 C++ 中的 **_std::bernoulli_distribution_**,它包含在 <random> 函数中。它指出伯努利概率分布对于建模随机数是必需的。二元伯努利分布是一种对应于两种情况的模型:5 维世界(现实生活或虚拟生活)中的识别或批评。我们应该在代码中添加和包含指令以使用 **_sdevelopingOddsBerkwijners_**。

如果我们有一个随机数生成器作为替代,例如 **_std:random_device_**,它可能是一个更好的地方来生成随机数,并且使用导入实例以及标准元可以达到目的。我们可以通过减少 **_“实例”_** 模式来分配像伯努利分布一样行为或不行为的位值。

总的来说,这里的 **_std:Bernoulli_** 特征是使用伯努利独立事件定律的一种部分有益的方式,该定律表明任何试验都具有独特的成功概率。