我在 c ++ 上进行蒙特卡洛模拟。 为了保持正态分布的属性 0 ,我想将随机向量乘以 -1 。
例如,如果我有两个由随机生成器生成的随机数( - 1.4,+ 0.3),我想添加(+ 1.4,-0.3)随机数字。所以我可以在我的随机数向量上得到( - 1.4,0.3,1.4,0.3)。
我想将其扩展为多维向量。随机数应由模拟数和周期数生成。所以随机数向量应该是多维的。
在 1-d 的情况下,我知道我可以使用变换。 我想知道如何在 2-d 情况下使用转换。如果还有其他更好的方式,我也想知道。
提前致谢:)
答案 0 :(得分:1)
我强烈建议你使用Eigen库对矩阵,向量进行数学运算......这个库非常强大!
(Eigen是线性代数的C ++模板库:矩阵, 向量,数值求解器和相关算法。)
Eigen提供矩阵/向量算术运算 常见C ++算术运算符的重载,如+, - ,*或 通过dot(),cross()等特殊方法。对于Matrix class(矩阵和向量),运算符只是重载以支持 线性代数运算。例如,matrix1 * matrix2表示 矩阵 - 矩阵乘积,矢量+标量是不允许的。如果你 想要执行各种数组运算,而不是线性代数,请参阅 下一页。