凡亿教育-娟娟
凡事用心,一起进步
打开APP
公司名片
凡亿专栏 | 随机数的种子问题
随机数的种子问题

开发过程中,经常会遇到生成随机数的需求,本文会详细介绍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  中仍然可以使用,但它的随机性较差,且范围固定。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论