我想知道在Python中是否有一种简单的方法来生成一个填充了随机数字的方阵,给定以下条件:
- 行总和必须为1。
- 对角线上的值应该显著高于其他值。
这是一个随机矩阵,生成一个是可能的,但关键是对角线的条件。例如,对于一个4x4的矩阵,输出应该类似于:
[[0.90, 0.03, 0.03, 0.04],
[0.01, 0.98, 0.005, 0.005],
[0.04, 0.01, 0.92, 0.03],
[0.00, 0.02, 0.03, 0.95]]
有没有好的方法可以为可变大小生成这样的矩阵?
random.uniform(0.9, 1.0)
来生成对角线值,然后生成一个包含3个其他数字的列表,并简单地标准化它们,以便它们总和为1 - diagonal_value
。但我确定一些统计学家会指出此方法生成了有偏差的数字样本,因此您可能不想这么做。顺便说一下,如果您愿意使用numpy,请考虑添加标签。 - Reti43