如何为Template变量给定随机值
How give random value for Template variable?
我正在构建一个矩阵类,它允许用户指定数据的类型。我希望能够根据模板为矩阵中的每个位置分配随机值。
如果模板是double,我想要一个double随机值,如果是int,我想要int随机值。有什么办法吗?
代码:
template <class T>
void matrix<T>::randFill(T start , T end ){
std::srand(time(0));
for(size_t i = 1; i <= _rows ;i++){
for(size_t j = 1; j <= _cols l i++){
_matrix[(i-1)*_cols + (j-1)] = static_cast<T>(std::rand % (end - start) + 1)
}
}
}
我真正的问题是,我如何才能知道模板T在运行时会是什么,并相应地更改结果?是否有某种方法可以实现类似switch语句的功能,该语句将模板的类型与某些预定义类型相匹配,并提供适当的值?这是一种天真的说法,但C++中有什么功能可以做到这一点吗?我知道typeid运算符,但我不知道怎么做。你能给我一个启发式的方法吗?只要给我指一个正确的方向,我会做剩下的。
旁注。在未来,我希望我的矩阵类能够采用3 int s的结构,这样我就可以表示RGB图像。是否有某种方法可以提取任意结构或类中的所有可用数据成员,并为其分配一个随机值?
很抱歉我说得太多了,我想把我想做的事情说清楚。-谢谢。
只需调用每种类型上重载的函数:
for(size_t i = 1; i <= _rows ;i++){
for(size_t j = 1; j <= _cols l i++){
set_random(_matrix[(i-1)*_cols + (j-1)]);
}
}
带有:
void set_random(int& val) { val = ... }
void set_random(double& val) { val = ... }
void set_random(char& val) { val = ... }
// etc.
相关文章:
- 将正态随机变量与任意 RHO(corrcoef) 相关联
- 为什么变量的打印地址在每次执行时都会打印随机值,即使它是 C 中的逻辑地址?
- 如何让变量随机输出四个单词之一
- 如何生成随机变量或类名并在以后使用?
- 尝试生成随机变量时获得"-nan(ind)"
- 为什么在 sync_with_stdio(false) 之前使用 cin 为下一个 i/p 变量提供随机值
- 如何使计算机每次在猪游戏中进行随机变量
- 如何通过Mersenne Twister生成不重复的随机变量
- C 中的Bernoulli随机变量
- 快速在C 中添加随机变量
- 为什么这个随机变量没有均匀分布?
- 具有QuantLib的泊松随机变量
- 生成n个随机变量,并用c++将它们相乘
- C++中的Marsaglia正态随机变量
- 随机变量总是生成5
- 随机变量名称,可能吗?
- 用相同的公式生成0和1之间的两个随机变量
- 如何最有效地防止正态分布的随机变量为零
- 如何在没有for循环的情况下请求boost::normaldistribution生成一个大的随机变量向量
- 有没有办法在不计算 CDF 的情况下从非标准分布生成随机变量