【发布时间】:2022-01-12 12:24:51
【问题描述】:
我有一个对称矩阵,我想在保持对角元素不变的同时随机洗牌。这些行的总和为 1,并且在洗牌后仍应为 1。
下面的玩具示例:
A <- rbind(c(0.6,0.1,0.3),c(0.1,0.6,0.3),c(0.1,0.3,0.6))
A
# [,1] [,2] [,3]
# [1,] 0.6 0.1 0.3
# [2,] 0.1 0.6 0.3
# [3,] 0.1 0.3 0.6
我想要一个矩阵 B,它具有与 A 相同的对角元素并且仍然是对称的,但是元素随机打乱以生成类似的东西
B <- rbind(c(0.6,0.3,0.1), c(0.3,0.6,0.1), c(0.3,0.1,0.6))
B
# [,1] [,2] [,3]
# [1,] 0.6 0.3 0.1
# [2,] 0.3 0.6 0.1
# [3,] 0.3 0.1 0.6
我的目标是在 24 *24 矩阵上执行此操作,因此代码可能很混乱,并且不需要计算成本低的东西。到目前为止,我已经尝试过使用循环,但代码很快变得过于复杂,我想知道是否有更直接的方法来做到这一点。
【问题讨论】: