|
clear; clc; close all;
5 d6 ?3 t3 V( F' _8 o0 P' u% K0 C- hn = 30;
% G1 N. E6 N. T x [9 r- SMin = 2; Max = 6;
% \& m) l0 n. V2 cM = zeros(n+1,n+1);
6 B/ {8 F6 ]' r3 V$ w! ^ii = 2;
6 `/ u4 g+ H" p2 |8 iwhile ii <= n+1# A: m) z# V& I# R9 q
ExistingNumberOfOne = sum( M(1:1:ii-1,ii) );
- P2 U7 U) A, {( v X% V TotalNumberOfOne = randi([Min Max],1,1);
% c, y. {# O# x8 H6 e3 N$ ~ if TotalNumberOfOne < ExistingNumberOfOne || ExistingNumberOfOne > Max
- f9 s4 y' {8 a* ^$ } ii = 2;
- r$ }; ^1 H) s; z2 T M = zeros(n+1,n+1);( _3 q8 y! `5 @5 e6 S- @9 y- S) `
else: Q5 p& U9 x7 D# @: q
idx = randperm(n-ii+2,min([TotalNumberOfOne - ExistingNumberOfOne, n-ii+2]));
5 ~' y! P" I9 y2 R2 B6 L tempArray = zeros(1,n-ii+2); tempArray(idx) = 1;
9 E7 p+ O3 c; _! Z t1 \ M(ii,ii:end) = tempArray;
7 l" z' q* I$ r5 _ ii = ii + 1;
$ T0 I1 {+ f- ~% ~7 R' i8 R# H3 o end
3 H1 P7 l8 l" [3 v0 Eend+ Y: F6 K0 m. C
M = M(2:end,2:end);
4 ^/ ]- l. H4 S/ ?6 w) LU = triu(ones(n),1); D = diag(M);$ d7 y1 m% r3 X2 l2 _
M = M.*U;
- M# ]6 f8 B8 x# K( yM = M' + M + diag( D );
( ]. V8 ]0 a% _if sum( Min<=sum(M) & sum(M)<=Max ) == n* ?5 B9 n) H; T# `+ L' ]& |
disp( M );
. L: p4 f- f4 G1 ?# j, G$ [end |
|