matlab中怎么随机生成一个M*N矩阵,使每列和为一固定值,每个元素为整数?
1个回答
展开全部
%
function
num=randn(min_n,max_n,m,n)
%思路:
%对于某一列,先产生该列第一个随机数a,其范围为[min_n,max_n]
%然后产生该列第二个随机数b,其范围为[min_n,max_n-a]
%之后产生该列第三个随机数c,其范围为[min_n,max_n-a-b]
%终止条件为max_n-a-b<=min_n
min_n=2;%最小值
max_n=100;%最大值
m=5;%行数,注:行数不宜大,否则0元素过多
n=30;%列数
num=zeros(m,n);%初始化
for
i=1:n
for
j=1:m
if
round(max_n-sum(num(1:j,i)))>min_n%随机数产生的终止条件
num(j,i)=floor(min_n+(max_n-sum(num(1:j,i)))*rand);%产生随机数
end
end
end
function
num=randn(min_n,max_n,m,n)
%思路:
%对于某一列,先产生该列第一个随机数a,其范围为[min_n,max_n]
%然后产生该列第二个随机数b,其范围为[min_n,max_n-a]
%之后产生该列第三个随机数c,其范围为[min_n,max_n-a-b]
%终止条件为max_n-a-b<=min_n
min_n=2;%最小值
max_n=100;%最大值
m=5;%行数,注:行数不宜大,否则0元素过多
n=30;%列数
num=zeros(m,n);%初始化
for
i=1:n
for
j=1:m
if
round(max_n-sum(num(1:j,i)))>min_n%随机数产生的终止条件
num(j,i)=floor(min_n+(max_n-sum(num(1:j,i)))*rand);%产生随机数
end
end
end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询