c++11学习笔记之随机数引擎

本文介绍了C++11引入的随机数引擎,作为替代传统rand()函数的更强大工具。通过引擎与分布类型的结合,可以方便地生成随机数。文章提及使用头文件 `<random>`,并指出设置种子(如`time(0)`)的重要性,以确保每次运行的随机性。此外,还提到随机数引擎支持多种分布类型,包括非均匀分布,提供了20种分布类型供开发者选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【说明】

以前一般使用随机数用rand函数,rand函数有很多缺点。现在标准库引入了新的随机数引擎,对于生产随机数更加方便且功能强大了。

它一般由引擎+分布类型的方式来生成随机数。


【使用】

它需包含头文件

#include <random>

直接用引擎生成两个随机数:

default_random_engine e;
	for (size_t i = 0; i < 2; i++)
	{
		cout << e() << " ";
	}
	cout << endl;
	//生成范围
	cout << "min:" << e.min() << "max:" << e.max() << endl;

上面的使用方式类似于rand。一般实际使用还需配合分布类型,如下:

//定义0到9的分布类型
	uniform_int_distribution<unsigned> u(0, 9);
	for (size_t i = 0; i < 2; i++)
	{
		cout << u(e) << " ";
	}
	cout << endl;
这样就可以生成0到9之间的随机数了,很简单吧。

当然这些随机数每次重新打开生成还是一样的,这就需要随机数种子了,种子是在引擎构建时传入了,一般我们用time(0):

//构建随机数引擎,传入随机种子
	default_random_engine e2(time(0));
	//浮点0到1
	uniform_real_distribution<double> d(0, 1);
	for (size_t i = 0; i < 2; i++)
	{
		cout << d(e2) << " ";
	}

上面产生了0到1之间的随机数。

随机引擎的功能还不止这些,还有更多的分布类型供你操作,比如还可以生成非均匀分布的随机数。

在标准库中定义了20种分布类型供你选择。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值