其次,对二维数组进行分析,可以得出循环的次数的规律,即偶数/2或者奇数对2取整后加1。
再次,可以看出方阵是从右下角开始,逆时针逐渐增加得来。
那么,可以写出以下函数:
function
printAll(number
,start){
//number为N阶矩阵,start为开始的数字,默认值分别是5和1。
number
=
number
||
5
start
=
start
||
1
//
c为求出的循环次数
var
c
=
number%2
==
0
?
number/2
:
Math.ceil(number/2)
//
定义一个一维数组,方便生成二维数组
var
arr
=
[]
//
生成二维数组并初始化,值为0
for(
var
i
=
0
i
<
number
i++){
arr[i]
=
[]
for(var
j
=
0
j
<
number
j++){
arr[i].push(0)
}
}
//
循环一次的函数
function
circle(c){
//
从下往上赋值
for(
i
=
number
-
c
-
1
i
>=
c
i--){
arr[i][number
-
c
-
1]
=
start++
}
//
从右往左赋值
for(i
=
number
-
c
-
2
i
>=
c
i--){
arr[c][i]
=
start++
}
//
从上往下赋值
for(
i
=
c
+
1
i
<
number
-
c
i++){
arr[i][c]
=
start++
}
//
从左往右赋值
for(i
=
c
+
1
i
<
number
-c
-
1
i++){
arr[number
-
c
-
1][i]
=
start++
}
}
//
循环给数组赋值
for(j
=
0
j
<
c
j++){
circle(j)
}
//
在控制台查看生成的数组信息,可注释掉
for(
i
=
0
i
<
number
i++){
console.log(arr[i])
}
}
希望可以帮到你,思路和函数全给你了
螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环,接下来用JS实现螺旋矩阵。核心点是在特殊拐点以及缩短环数处做操作。
没有rando函数。只有rand和randn1.rand()
生成(0,1)区间上均匀分布的随机变量。基本语法:
rand([M,N,P ...])
生成排列成M*N*P... 多维向量的随机数。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:
rand(5,1) %生成5个随机数排列的列向量,一般用这种格式
rand(5) %生成5行5列的随机数矩阵
rand([5,4]) %生成一个5行4列的随机数矩阵
生成的随机数大致的分布。
x=rand(100000,1)
hist(x,30)
由此可以看到生成的随机数很符合均匀分布。(视频教程会略提及hist()函数的作用)
2.randn()
生成服从标准正态分布(均值为0,方差为1)的随机数。基本语法和rand()类似。
randn([M,N,P ...])
生成排列成M*N*P... 多维向量的随机数。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:
randn(5,1) %生成5个随机数排列的列向量,一般用这种格式
randn(5) %生成5行5列的随机数矩阵
randn([5,4]) %生成一个5行4列的随机数矩阵
3、matlab中random函数——通用函数,求各分布的随机数据,其用法:
y = random('norm',A1,A2,A3,m,n)
式中:A1,A2,A3为分布的参数,m,n用来指定随机数的行和列,name的取值有相关的表格来参照。
例:产生一个3行4列均值为2、标准差为0.3的正态分布随机数:
>>y =random('norm',2,0.3,3,4)
y =
2.1613 2.2587 1.8699 2.8308
2.5502 2.0956 2.1028 1.5950
1.3223 1.6077 3.0735 2.9105