|
clc;clear all;
%问题5:已知p是素数,n阶整数方阵A每个元素取值范围{0,…,p-1},估计det(A)的范围和p|det(A)的概率。
p=3
n=5
%计算的次数,和矩阵的阶数还有素数p的值紧密相关
numofcacu=(p-1)^(n^2+1);
if(numofcacu>1000000)
numofcacu=1000000;
end
%记录det(A)的值
dA=ones(1,numofcacu);
%最大的detA
maxofdetA=0;
%最小的detA
minofdetA=0;
%probability
devide=0;
for i=1:numofcacu
%产生随机矩阵,满足均匀分布,n阶整数方阵A每个元素取值范围{0,…,p-1}
A=randint(n,n,[0 p-1]);
dA(i)=det(A);
%最大的detA
if(dA(i)>maxofdetA)
maxofdetA=dA(i);
end
%最小的detA
if(dA(i)<minofdetA)
minofdetA=dA(i);
end
%probability
if(mod(dA(i),p)==0)
devide=devide+1;
end
end
%输出相应的数值
maxofdetA
minofdetA
probability=devide/numofcacu |
|