C++ 随机数学习笔记
1. 随机数生成器
在 C++ 中,随机数生成器是用于生成随机数序列的关键组件。C++ 提供了多种随机数生成器,每种生成器都有其特定的算法和性能特点。
1.1 default_random_engine
- 作用:
default_random_engine
是 C++ 标准库中的默认随机数引擎,采用了高质量的随机数生成算法。 - 示例代码:
#include <iostream> #include <random> int main() { std::default_random_engine generator; int random_number = generator(); std::cout << "Random number: " << random_number << std::endl; return 0; }
1.2 minstd_rand0
和 minstd_rand
- 作用:这两个类提供了 C++ 标准库中的两种线性同余算法随机数生成器。
- 示例代码:
#include <iostream> #include <random> int main() { std::minstd_rand0 generator; // 或者使用 std::minstd_rand int random_number = generator(); std::cout << "Random number: " << random_number << std::endl; return 0; }
1.3 mt19937
- 作用:
mt19937
类是 Mersenne Twister 算法的实现,提供了高质量的随机数序列。 - 示例代码:
#include <iostream> #include <random> int main() { std::mt19937 generator; int random_number = generator(); std::cout << "Random number: " << random_number << std::endl; return 0; }
2. 随机数分布
除了随机数生成器,C++ 还提供了多种随机数分布函数,用于生成符合特定概率分布的随机数序列。
2.1 均匀分布 uniform_distribution
- 作用:生成指定范围内的均匀分布随机数。
- 示例代码:
#include <iostream> #include <random> int main() { std::default_random_engine generator; std::uniform_int_distribution<int> distribution(1, 100); int random_number = distribution(generator); std::cout << "Random number: " << random_number << std::endl; return 0; }
2.2 正态分布 normal_distribution
- 作用:生成符合正态分布的随机数。
- 示例代码:
#include <iostream> #include <random> int main() { std::default_random_engine generator; std::normal_distribution<double> distribution(0.0, 1.0); double random_number = distribution(generator); std::cout << "Random number: " << random_number << std::endl; return 0; }
2.3 泊松分布 poisson_distribution
- 作用:生成符合泊松分布的随机数。
- 示例代码:
#include <iostream> #include <random> int main() { std::default_random_engine generator; std::poisson_distribution<int> distribution(5); int random_number = distribution(generator); std::cout << "Random number: " << random_number << std::endl; return 0; }
3. 应用场景与实战案例分析
随机数在计算机科学中有着广泛的应用场景,下面是一些常见的应用场景和实战案例分析:
3.1 游戏开发
在游戏开发中,随机数被广泛应用于随机地图生成、敌人行为模拟、物品掉落概率计算等方面。
3.2 金融建模
在金融领域,随机数可以用于模拟股价变动、利率变动等,进行金融产品风险评
估和交易策略研究。
3.3 数据加密
随机数在密码学中起着重要作用,用于生成安全的随机密钥、初始化向量等,保护数据的安全性。
通过深入学习随机数的生成原理、分布函数和应用场景,可以更好地掌握随机数的使用方法,为各种实际项目的开发提供有力支持。