本文介绍了设置种子boost :: random的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想使用不同的种子号重置随机序列。运行此测试代码时:
I would like to reset random sequences by using different seed numbers. When running this test code:
boost::mt19937 gener(1);
boost::normal_distribution<> normal(0,1);
boost::variate_generator<boost::mt19937&,boost::normal_distribution<> > rng(gener, normal);
cout << rng() << endl;
cout << rng() << endl;
cout << rng() << endl;
gener.seed(2);
cout << rng() << endl;
cout << rng() << endl;
gener.seed(1);
cout << rng() << endl;
gener.seed(2);
cout << rng() << endl;
gener.seed(3);
cout << rng() << endl;
我得到以下输出:
# seed(1) via constructor
-2.971829031
1.706951063
-0.430498971
# seed(2)
-2.282022417
-0.5887503675
# seed(1)
0.2504171986
# seed(2)
-0.5887503675
# seed(3)
0.2504171986
显然我做错了事。
推荐答案
按照Jim,Alan和Igor的建议对代码进行了一些修改: rng.engine()。seed()
而不是 gener.seed()
,并调用 rng.distribution ($
rng.engine()。seed()
后调用
Following Jim, Alan and Igor suggestions made some changes to the code: rng.engine().seed()
instead of gener.seed()
, and called rng.distribution().reset()
after the call to rng.engine().seed()
and it worked like a charm.
非常感谢!
这篇关于设置种子boost :: random的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!