c++ - 如何自定义 setRandom 的范围?
问题描述
Eigen 提供了使用矩阵和向量(其中一维为 1)的工具。我正在尝试开发一个函数,它double *array
用由setRandom
.
double *gen_random(int size, double min, double max) {
double *array = new double[size * sizeof(double)];
Matrix<double, Dynamic, Dynamic, RowMajor>::Map(array, size, 1).setRandom();
return array;
}
上面的代码可以做到这一点,但随机范围是 [-1:1] 根据https://eigen.tuxfamily.org/dox/classEigen_1_1PlainObjectBase.html#title35。
如何将范围更改为 ie [0:99]?
到目前为止,答案和评论似乎建议添加一个循环以获得所需的结果,例如:
double *gen_random(int size, double min, double max) {
double *array = new double[size * sizeof(double)];
Matrix<double, Dynamic, Dynamic, RowMajor>::Map(array, size, 1).setRandom();
for (int i = 0; i < size; ++i)
array[i] = (array[i]+1)*50;
return array;
}
解决方案
正如评论中所建议的那样,您可能应该只执行算术以使您的随机值进入所需的范围(即+1
,然后* 50
)。无论如何,这基本上是不同请求范围会发生的情况。
推荐阅读
- html - 如何使用 jquery 获取 html 选择 > 选项标签自定义属性值?
- python - 删除 Pandas Dataframe 中的非等效多索引行
- docker - Boto3 超时连接到本地 dynamodb 但可以卷曲
- c# - 如何以不同方式设置 Blazor 组件的样式
- php - 为什么我的脚本可以工作,但它在控制台中显示语法错误?
- html - 将按钮添加到 CSS 图像?
- vue.js - 如何使用Vuetifyjs更改日历中过去事件的颜色
- c# - 使用 Angular 和 .net core api 设置 DocuSign 电子签名
- laravel - laravel 资源 url 取决于模型?
- bash - bash 变量来存储目录名和空格