分类：教育/科学-理工学科-数学
问题：老师您好，我想随机生成一个矩阵，其中每个元素都是整数，怎样能保证? 
您好，我想随机生成一个矩阵，其中每个元素都是整数，怎样能保证它的行列式为1或-1？能不能提供一个思路
回答：这是个多维蒙特卡罗问题，如果你要求任意一个这种方阵都等可能生成，则用舍选法即可。即随机产生一个整数阵，若行列式为1或-1，则生成，否则舍弃。由于没有限定整元的上界，该模拟的效率是非常低的，因为几乎所有的取样都会因行列式不为1或-1而被舍弃了。实际的Montearlo模拟都是有界样本，因此如果限定一个上界，比如机器的初级上界，则仍然可以认为有一定效率，而且产生的分布是均匀的。更有效的方法是这样。由于 (-/+)1 = detA = a1*A1 + a2*A2 + ...an*An， 这里a1，...an为某一行元素，A1，...An为其余n-1行对应代数余子式。那么由初等数论知当且仅当detA1, detA2, ... detAn 的最大公约数为1时最后一行a1,a2,...an有解。这样先（等可能地）随机生成某n-1行，再随机调整某个元素，使(detA1,detA2,...detAn)=1，然后再从上述不定方程的解中生成剩下一行即可。不难证明上述对某个元素的调整是有效的，比如可以使（detA1, detAn)=1。但上面并没有给出有效的算法保证所有可行的调整值被等可能的利用，因此还不能说所有这种方阵（如上所述可以认为其每个阵元有一个界）被等可能生成。不过，生成的分布也应该非常均匀了。