我可能付出了不必要的努力,但谁在乎呢,让我们尝试解决这个问题:我想<random>
在我的代码中使用“random_device”生成器。但这在某些系统上可能不可用(根据规范),所以我希望 mt19937 作为备份(但无论我使用什么生成器,我都希望最后有相同的变量名)。现在,我可以试试 random_device 看看它是否工作正常,但接下来呢?如果我使用 if 语句,我的生成器将在 if 之后消失。如果我声明它,之后我将无法更改类型。在代码下方,这不起作用。
bool random_working=true;
try
{
random_device rd; //throws exception when not able to construct
}
catch(exception& e)
{
cout<<"Exception: ''random_device'' not working, switching back to mt19937"<<endl;
random_working=false;
}
if(random_working)
random_device mc; //for _M_onte-_C_arlo
else
mt19937 mc;