<random>头文件中的一些概率分布函数对象

本文介绍C++中如何使用std空间下的随机数生成器及多种概率分布函数类模板,包括随机设备生成基本随机数、均匀分布、正态分布等,并提供了具体的代码示例。

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

说明:都在std空间下。


1. 随机数

	random_device rd;// 是函数对象
	cout << rd.entropy() << endl;// 熵,2的多少次方,返回32
	cout << "min = " << rd.min() << ", max = " << rd.max() << endl;// rd.min() = 0, rd.max() = 2^32
	// 求一百个0~26的随机数
	for (int i = 0; i < 100; i++)
		cout << (rd() % 26) << endl;// [0, 26)
可以简写成
	for (int i = 0; i < 100; i++)
		cout << random_device()() % 26 << endl;

2. 均匀分布
	random_device rd;
	mt19937 gen(rd());
	uniform_int_distribution<> dis(1, 6);// [1, 6]区间
	// 随机生成10个在[1, 6]区间均匀分布的整数
	for(int n = 0; n < 10; ++n)
		cout << dis(gen) << ' ';


3. 正态分布(高斯分布)
	random_device rd;
	mt19937 gen(rd());
	normal_distribution<> dis(0.0, 10.0);// dis(μ, σ)
	// 随机生成50个服从以0.0为均值,10.0为标准差的正态分布的数
	for (int i = 0; i < 50; i++)
		cout << dis(gen) << endl;

……

更多概率分布函数类模板
1.均匀分布:
uniform_int_distribution           整数均匀分布
uniform_real_distribution         浮点数均匀分布

2.伯努利类型分布:(仅有yes/no两种结果,概率一个p,一个1-p)
bernoulli_distribution     伯努利分布
binomial_distribution      二项分布
geometry_distribution     几何分布
negative_biomial_distribution   负二项分布

3.Rate-based distributions: 
poisson_distribution  泊松分布
exponential_distribution 指数分布
gamma_distribution 伽马分布
 weibull_distribution 威布尔分布
extreme_value_distribution 极值分布

4.正态分布相关:
normal_distribution         正态分布
chi_squared_distribution 卡方分布
cauchy_distribution        柯西分布
fisher_f_distribution       费歇尔F分布
student_t_distribution  t分布

5.分段分布相关:
discrete_distribution 离散分布
piecewise_constant_distribution 分段常数分布
piecewise_linear_distribution 分段线性分布


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值