|
clear; clc; close all;: N2 o4 ]9 s j$ I2 t+ c3 w& R
n = 30;
- J) D4 ~. G+ Y2 p$ FMin = 2; Max = 6; |* b" w3 h X7 {3 H' H
M = zeros(n+1,n+1);8 T3 t3 n8 ~" c
ii = 2;
1 _6 r" c8 u' y2 v+ X6 i* T' Uwhile ii <= n+15 d0 |3 H- A: k( y
ExistingNumberOfOne = sum( M(1:1:ii-1,ii) );
[* {/ H+ Q7 J: l: Q6 i9 f0 U3 L# ~ TotalNumberOfOne = randi([Min Max],1,1);0 p9 v3 B( Z, Y2 J; S
if TotalNumberOfOne < ExistingNumberOfOne || ExistingNumberOfOne > Max
, \: X7 F& l: C4 s* ?! _ ii = 2;
' R8 T9 z2 D3 p* w9 V M = zeros(n+1,n+1);8 I a9 b9 X0 v8 m2 X2 z
else
" Q; y$ b; N* p* a. `" J6 m idx = randperm(n-ii+2,min([TotalNumberOfOne - ExistingNumberOfOne, n-ii+2]));% V: x) B: q3 s, o: o
tempArray = zeros(1,n-ii+2); tempArray(idx) = 1;
2 g/ N2 `, \# s- B: \ M(ii,ii:end) = tempArray;
9 A' V. N5 H# Q. C/ O ii = ii + 1;
: i4 ~. _; O* _0 d2 | end
. f c' L- ~) b- q0 C. I4 ~end! o& c- n( B2 `! z& `
M = M(2:end,2:end);5 u2 ^) @3 t9 g2 C
U = triu(ones(n),1); D = diag(M);
( ^: L1 O4 k5 z6 N( U9 uM = M.*U;: G- W# j6 a5 ^# v$ A5 _2 R( K- F; o
M = M' + M + diag( D );8 G6 Q9 s! H5 y0 @
if sum( Min<=sum(M) & sum(M)<=Max ) == n# r! H7 t* e# C$ E+ o1 f, g" O
disp( M );( K' Q7 F* G! M/ X# R9 |5 X9 j
end |
|