【发布时间】:2017-06-02 06:28:50
【问题描述】:
我必须创建一个函数,该函数使用自然数创建一个“n”乘“n”矩阵,并且列和行的总和必须相等。
函数f(n, s) 应该有 2 个参数:
- n - 维度
- s - 总和
我对这个问题有部分解决方案:
n<-3
s<-20
m<-matrix(rep(0,n^2),n)
for (c in 1:n){
for (r in 1:n){
if (r==n) m[r,c]<-s-sum(m[1:r-1,c])
else{
m[r,c]<-round(runif(1,1,s-(n-1)-sum(m[1:r,c])))
print (sum(m[1:r,c]))
}
}
}
m
总和仅对列相等。我需要帮助来改进我的代码。非常感谢您的帮助!
【问题讨论】:
-
假设 s>n,(没有这个问题是棘手的)
diag(n)*(s-n)+1做你问的。 -
Miff 非常简短的答案在 s > n 时有效,但如果 s = n 则问题可以解决。你可以做
if (n == s) { matrix(1, nrow=n, ncol=n) } else { diag(n)*(s-n)+1 }。或者,如果您将零作为自然数,则只需diag(s)。