使用c++标准库生成随机数

本文介绍了C++标准库中如何使用随机引擎和分布来生成随机数。随机引擎是随机数的源头,可以生成指定范围内的无符号值,而分布则负责将这些值转换为所需的特定分布。引擎的状态由种子决定,相同的种子和状态会产生相同的随机数。文章提到了一些随机引擎的基本操作函数,并讨论了如何利用分布如uniform_int_distribution和uniform_real_distribution来生成均匀分布的随机数。建议使用std::random_device生成种子以确保随机性。
摘要由CSDN通过智能技术生成

C++标准库中将随机数的产生分为了两个部分:随机引擎(engine) 和分布(distriution)。头文件为
随机引擎:是随机数的源头,会随机产生无正负号值,他们被随机均匀的分布在一个预定义最小(min())和最大(max())值之间,需要一个种子。
分布:将随机引擎产生的值转换为随机数,线性或者非线性的分布在其中。
**注意: **引擎是有状态的,当两个一样的引擎,使用同一个种子,并且状态相同时,会产生相同的值。再加上分布之后,依然会是一个相同的值,而不是随机值。所以在放置种子的时候,需要仔细斟酌。

随机引擎的一些基本操作函数:

  1. engine e; 默认构造函数
  2. engine e(seed);根据seed形成的状态来建立引擎
  3. e.seed();将引擎设为初始化状态
  4. e.seed(seed);将引擎根据seed而形成的状态
  5. e();返回下一个随机值,并前进其状态;
  6. e1 == e2;返回"e1 e();返回下一个随机值,并前进其状态;
  7. e1 != e2; 返回"e1 和e2是否不拥有相同的状态" e1 != e2; 返回"e1 和e2是否不拥有相同的状态"

分布
分布即是把引擎产生的随机值转换为真实而有用的随意数。产生数的概率取决于使用何种分布。
如:均匀分布:
uniform_int_distribution int
uniform

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值