开发过程中,经常会遇到生成随机数的需求,本文会详细介绍C 中生成随机数的方法以及一些注意事项。
随机数核心组件
C 11引入了库,这个库提供了随机数生成工具。
下面是C 中生成随机数的核心组件:
随机数引擎:生成伪随机数的算法。
随机数分布:将随机数引擎生成的数映射到特定范围或分布。
真随机数生成器:如std::random_device,用于生成高质量的随机数。
种子(Seed)
种子是随机数生成器的初始值。
相同的种子会生成相同的随机数序列。
常用种子来源:
当前时间:std::time(0)。
真随机数生成器:std::random_device。
伪随机数引擎
std::mt19937:基于Mersenne Twister算法,周期长,随机性好。
std::minstd_rand:线性同余生成器,速度快,但随机性较差。
std::default_random_engine:默认引擎,实现可能因平台而异。
随机数分布
均匀分布:std::uniform_int_distribution、std::uniform_real_distribution。
正态分布:std::normal_distribution。
伯努利分布:std::bernoulli_distribution。
真随机数生成器
std::random_device:依赖于硬件或操作系统提供的随机数源。
适用于生成种子或高安全性场景。
生成随机数的方法std::rand
std::rand是C标准库中的随机数生成函数,C 中仍然可以使用,但它的随机性较差,且范围固定。
暂无评论