C++ 随机数引擎

梳理一下C++随机数引擎的相关知识。核心知识点是:引擎会返回相同的随机数序列。(可以理解为标准库random中的所有引擎对象无论何时都返回一个同样的、固定的、无限多元素的伪随机数序列)
Q: 为什么我们应该把引擎声明为static的?
A: 可以把每个引擎想象成在一个已生成好的随机序列上的迭代器,每次使用分布类型时就会推进这个迭代器。因此,这也就解释了为什么badRand和goodRand的区别:

//bad_rand中没有将随机引擎和分布对象作为static静态成员 因此每次调用返回的数值序列都相同
unsigned bad_rand() {
   
	default_random_engine e;
	uniform_int_distribution<unsigned> u(0, 9);
	//cout << u(e) << ends;
	return u(e);
}
//每次调用返回不同数值序列
unsigned good_rand() {
   
	static default_random_engine e;
	static uniform_int_distribution<unsigned> u(0, 9);
	//cout << u(e);
	return u(e);
}
//test:
int main() {
   
	for (int i = 0; i < 10;++i) {
   
		cout << bad_rand() << ends;
	}
	cout << endl;
	for (
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值