c – 在多个功能中共享随机引擎
发布时间:2020-12-16 05:06:44 所属栏目:百科 来源:网络整理
导读:所以我的问题简而言之:如何在不将引擎作为参数传递的情况下从另一个函数访问main()中初始化的随机引擎? 我读到这是一个习惯,只能在一个程序中初始化一个随机引擎. 我会在main()函数的开头这样做: #include iostream#include random#include ctimeusing st
所以我的问题简而言之:如何在不将引擎作为参数传递的情况下从另一个函数访问main()中初始化的随机引擎?
我读到这是一个习惯,只能在一个程序中初始化一个随机引擎. #include <iostream> #include <random> #include <ctime> using std::cout; using std::endl; using std::default_random_engine; using std::uniform_int_distribution; int main() { int seed = time(0); default_random_engine engine(seed); uniform_int_distribution<int> dist(0,100); cout << "Random num: " << engine(dist) << endl; } 但是我如何让它可以被其他功能访问?例如,在一个嵌套结构中,函数func_a调用func_b,它应该用引擎生成的随机数做某事. #include <iostream> #include <random> #include <ctime> using std::cout; using std::endl; using std::default_random_engine; using std::uniform_int_distribution; void func_b() { // do sth cout << "Print a random number: " << endl; } void func_a() { func_b(); } int main() { int seed = time(0); default_random_engine engine(seed); uniform_int_distribution<int> dist(0,100); func_a(); } 编辑:问题解决了,谢谢. #include <iostream> #include <random> #include <ctime> using std::cout; using std::endl; using std::default_random_engine; using std::uniform_int_distribution; //////////////////////// // GLOBAL VARIABLES //////////////////////// int seed = time(0); default_random_engine engine(seed); //////////////////////// // FUNCTION DEFINITIONS //////////////////////// void func_b() { uniform_int_distribution<int> dist(0,100); cout << dist(engine) << endl; } void func_a() { func_b(); } int main() { int seed = time(0); default_random_engine engine(seed); uniform_int_distribution<int> dist(0,100); func_a(); } 解决方法
感谢你的帮助.我将解决方案复制到答案部分,以便将其标记为已接受.
#include <iostream> #include <random> #include <ctime> using std::cout; using std::endl; using std::default_random_engine; using std::uniform_int_distribution; //////////////////////// // GLOBAL VARIABLES //////////////////////// int seed = time(0); default_random_engine engine(seed); //////////////////////// // FUNCTION DEFINITIONS //////////////////////// void func_b() { uniform_int_distribution<int> dist(0,100); func_a(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |