我正在编写代码,其中随机数从均匀分布中进行抽样,其边界在for循环的某些迭代中发生变化,例如:
std::mt19937 generator{0};
for(int i = 0; i < n; ++i)
{
if(conditions are met)
{
// low and hi bounds change for each iteration
std::uniform_int_distribution<int> U(low, hi);
auto sample = U(generator);
}
}
这是我目前编写代码的方式,但它会在每次满足条件的迭代中创建和删除一个临时的
std::uniform_int_distribution<int>
对象。这是一个昂贵的过程吗?编译器优化能否在for循环外部构建对象,并在if语句内重构均匀分布的边界?我不确定那是否更快。还有其他可能更好的方法吗?