提供一個方法:
n=10;%可以改成你想要的數
A=zeros(n);
index=randperm(n);%生成隨機排列是關鍵
A((n)*(0:n-1)+index)=1
因為是隨機序列,所以每次都不一樣,一個結果:
A =
0 0 0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 1
用迴圈實在沒必要,n較大的時候嚴重影響計算速度,不過好程式設計:
for k=1:n
A(index(k),k)=1
end
效果是一樣的,不再囉嗦了。
提供一個方法:
n=10;%可以改成你想要的數
A=zeros(n);
index=randperm(n);%生成隨機排列是關鍵
A((n)*(0:n-1)+index)=1
因為是隨機序列,所以每次都不一樣,一個結果:
A =
0 0 0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0
1 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 1
用迴圈實在沒必要,n較大的時候嚴重影響計算速度,不過好程式設計:
for k=1:n
A(index(k),k)=1
end
效果是一樣的,不再囉嗦了。