如何从奇异矩阵中均匀采样

时间:2014-01-17 17:13:00

标签: algorithm math matrix

我想从n个伯努利矩阵中均匀地采样所有奇异n(即每个条目是1或0,概率为1/2)。我当然可以从所有n个n伯努利矩阵中抽样,并拒绝那些非奇异的,但对于任何效率极低的n都是非常低效的。

作为一个例子,在我测试的10000个随机100×100矩阵中,没有一个是单数的。

有一种有效的方法吗?

这是一些测试python代码来显示问题。

import numpy as np
iters = 10000
n = 100
count = 0
for i in xrange(iters):
    A = np.random.randint(2, size = (n,n))
    if (np.linalg.matrix_rank(A) < n):
        count += 1
print count

1月20日发布到https://mathoverflow.net/questions/155185/how-to-sample-uniformly-from-singular-matrices


https://mathoverflow.net/questions/155185/how-to-sample-uniformly-from-singular-matrices现在有一个建议的算法来解决这个问题。剩下的挑战是弄清楚如何实施它。

1 个答案:

答案 0 :(得分:1)

评论有点偏离,所以我将其作为答案发布:

这里有一篇论文:http://www.researchgate.net/publication/2729950_Efficient_Generation_of_Random_Nonsingular_Matrices/file/e0b4951d5a6fcc7e67.pdf描述了如何在有限域上生成非奇异的,以及作为扩展的奇异矩阵。由于在编程中实数在某种程度上是有限的,所以我认为它应该适用于此。