- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个程序需要指数分布的随机数。我正在使用 C++11 随机数和分布库支持。
我有一个分布:std::exponential_distribution<double> exp_dis(lambda);
lambda
是任何开始的值。 0.0
或 1.0
是可以使用的值。
我使用指针在线程函数中引用此分布。 (我为每个线程函数独立分配以避免数据竞争条件。)
lambda
的值在循环中计算,每次执行循环时都可以更改。
所以我想知道参数lamda
的值是怎么来的可以在指数分布内“设置”。
通过一些快速搜索,我认为我应该能够使用成员函数 param()
来完成此操作, 但我无法弄清楚要使用的确切语法。
这行不通:
// Pointer to exponential distribution object
exp_dis_p->param(lambda);
最佳答案
您还可以更改 lambda
您的指数分布如下。
template<typename T>
void set_new_lambda(std::exponential_distribution<T> *exp_dis, T val)
{
typename std::exponential_distribution<T>::param_type new_lambda(val);
exp_dis->param(new_lambda);
}
并且可以如下使用它
int main()
{
std::exponential_distribution<double> exp_dis(0.1);
std::cout<<exp_dis.lambda()<<'\n';
set_new_lambda(&exp_dis,0.2);
std::cout<<exp_dis.lambda()<<'\n';
return 0;
}
或者如果您只处理 double 类型,那么您也可以按照以下方式进行操作。
int main()
{
std::exponential_distribution<double> exp_dis(0.1);
auto ptr = &exp_dis;
std::exponential_distribution<double>::param_type new_lambda(0.2);
ptr->param(new_lambda);
}
你可以看到 param_type
分发可以声明为 std::exponential_distribution<double>::param_type
.
关于C++ 如何设置 `std::exponential_distribution` 对象的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33350164/
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
C++ 标准库 - 随机数生成和分布:如何设置指数分布的参数? 我有一个程序需要指数分布的随机数。我正在使用 C++11 随机数和分布库支持。 我有一个分布:std::exponential_dist
当我查看 std::exponential_distribution 的文档时,它似乎没有公开在运行时更改 lambda 参数的标准方法。 有一个param 方法,但它采用不透明的成员类型param_
出于某种原因,我无法使用 uniform_int_distribution (来自 C++ TR1 header )在 Mingw-w64 G++ 中,即使 exponential_distribu
我是一名优秀的程序员,十分优秀!