将n组1-n随机置于n*n的单元格中,使得每行,每列都是1-n的一个全排列
-
SubPerm()
-
DimnAsLong,iAsLong,jAsLong,arr(),brr(),tAsLong
- n=20
-
ReDimarr(n-1,n-1)
-
ReDimbrr(n-1)
-
Fori=0Ton^2-1
-
arr(i\n,iModn)=(i\n+i)Modn+1
-
Next
- Randomize
-
Fori=n-1To0Step-1
- t=Int(Rnd*i+1)
-
Forj=0Ton-1
- brr(j)=arr(j,t)
-
Next
-
Forj=0Ton-1
- arr(j,t)=arr(j,i)
- arr(j,i)=brr(j)
-
Next
- t=Int(Rnd*i+1)
-
Forj=0Ton-1
- brr(j)=arr(t,j)
-
Next
-
Forj=0Ton-1
- arr(t,j)=arr(i,j)
- arr(i,j)=brr(j)
-
Next
-
Next
- [a1].Resize(n,n)=arr
-
EndSub
执行结果:
1 |
19 |
14 |
6 |
8 |
9 |
18 |
10 |
16 |
11 |
13 |
4 |
20 |
17 |
3 |
5 |
15 |
2 |
7 |
12 |
3 |
1 |
16 |
8 |
10 |
11 |
20 |
12 |
18 |
13 |
15 |
6 |
2 |
19 |
5 |
7 |
17 |
4 |
9 |
14 |
10 |
8 |
3 |
15 |
17 |
18 |
7 |
19 |
5 |
20 |
2 |
13 |
9 |
6 |
12 |
14 |
4 |
11 |
16 |
1 |
16 |
14 |
9 |
1 |
3 |
4 |
13 |
5 |
11 |
6 |
8 |
19 |
15 |
12 |
18 |
20 |
10 |
17 |
2 |
7 |
14 |
12 |
7 |
19 |
1 |
2 |
11 |
3 |
9 |
4 |
6 |
17 |
13 |
10 |
16 |
18 |
8 |
15 |
20 |
5 |
2 |
20 |
15 |
7 |
9 |
10 |
19 |
11 |
17 |
12 |
14 |
5 |
1 |
18 |
4 |
6 |
16 |
3 |
8 |
13 |
17 |
15 |
10 |
2 |
4 |
5 |
14 |
6 |
12 |
7 |
9 |
20 |
16 |
13 |
19 |
1 |
11 |
18 |
3 |
8 |
15 |
13 |
8 |
20 |
2 |
3 |
12 |
4 |
10 |
5 |
7 |
18 |
14 |
11 |
17 |
19 |
9 |
16 |
1 |
6 |
20 |
18 |
13 |
5 |
7 |
8 |
17 |
9 |
15 |
10 |
12 |
3 |
19 |
16 |
2 |
4 |
14 |
1 |
6 |
11 |
18 |
16 |
11 |
3 |
5 |
6 |
15 |
7 |
13 |
8 |
10 |
1 |
17 |
14 |
20 |
2 |
12 |
19 |
4 |
9 |
13 |
11 |
6 |
18 |
20 |
1 |
10 |
2 |
8 |
3 |
5 |
16 |
12 |
9 |
15 |
17 |
7 |
14 |
19 |
4 |
7 |
5 |
20 |
12 |
14 |
15 |
4 |
16 |
2 |
17 |
19 |
10 |
6 |
3 |
9 |
11 |
1 |
8 |
13 |
18 |
8 |
6 |
1 |
13 |
15 |
16 |
5 |
17 |
3 |
18 |
20 |
11 |
7 |
4 |
10 |
12 |
2 |
9 |
14 |
19 |
12 |
10 |
5 |
17 |
19 |
20 |
9 |
1 |
7 |
2 |
4 |
15 |
11 |
8 |
14 |
16 |
6 |
13 |
18 |
3 |
6 |
4 |
19 |
11 |
13 |
14 |
3 |
15 |
1 |
16 |
18 |
9 |
5 |
2 |
8 |
10 |
20 |
7 |
12 |
17 |
11 |
9 |
4 |
16 |
18 |
19 |
8 |
20 |
6 |
1 |
3 |
14 |
10 |
7 |
13 |
15 |
5 |
12 |
17 |
2 |
9 |
7 |
2 |
14 |
16 |
17 |
6 |
18 |
4 |
19 |
1 |
12 |
8 |
5 |
11 |
13 |
3 |
10 |
15 |
20 |
19 |
17 |
12 |
4 |
6 |
7 |
16 |
8 |
14 |
9 |
11 |
2 |
18 |
15 |
1 |
3 |
13 |
20 |
5 |
10 |
5 |
3 |
18 |
10 |
12 |
13 |
2 |
14 |
20 |
15 |
17 |
8 |
4 |
1 |
7 |
9 |
19 |
6 |
11 |
16 |
4 |
2 |
17 |
9 |
11 |
12 |
1 |
13 |
19 |
14 |
16 |
7 |
3 |
20 |
6 |
8 |
18 |
5 |
10 |
15 |
分享到:
相关推荐
### 随机方阵排序知识点解析 #### 1. 题目理解与解析 题目要求编写一个函数,能够处理一个5×5的方阵(即行数和列数相等的矩阵)。该函数的功能是将矩阵中的最大元素放置在矩阵的正中央位置(即第3行第3列的位置)...
- **生成n阶随机数方阵**:使用`rand(n)`可以生成一个n×n的矩阵,其中每个元素都是0到1之间的随机数。 - **生成m×n的随机数矩阵**:使用`rand(m,n)`可以生成一个m行n列的矩阵,其中每个元素都是0到1之间的随机数。...
- **rand(n)**:生成n阶0到1之间的均匀分布随机方阵。 - **rand(m,n)**:生成m×n的均匀分布随机矩阵。 - **randn(n)**:生成n阶标准正态分布的随机方阵。 - **randn(m,n)**:生成m×n的标准正态分布随机矩阵。 ...
randpermmat-随机置换矩阵A = randpermmat(N) 返回一个方阵,其中每一行和每一列保存整数 1:N 的排列。 这也称为随机拉丁广场,每个整数在每一行和每一行中恰好出现一次柱子。 A = randpermmat(N, M) 返回一个 N×M ...
拉丁方是一个由n行和n列组成的n×n方阵,其中每行和每列都恰好包含n个不同的符号(通常用数字表示)。生成一个随机的拉丁方可以通过随机选择元素的位置来实现,但这种方法需要能够生成指定范围内的随机数。 ##### ...
4. **randperm(n)**:这个函数生成1到n的一个无重复随机排列,对于模拟随机抽样或者打乱数据顺序非常方便。 5. **其他特定分布的随机数生成器**: - **betarnd(a, b)**:贝塔分布,参数a和b决定了分布的形状。 - ...
这段代码会生成一个n行n列的方阵,其中每个元素都是[0, 1)区间内的随机浮点数。 转置是矩阵操作的一种,它将矩阵的行变为列,列变为行。对于一个方阵A,其转置记为A^T。转置的要点正如描述中提到的,是以对角线为轴...
* 随机阵函数:>>randn(n,n),生成一个n×n的随机阵。 矩阵下标与子矩阵提取 * A(m, n),提取第m行,第n列元素。 * A(:, n),提取第n列元素。 * A(m, :,提取第m行元素。 * A(m1:m2, n1:n2),提取第m1行到第m2行和...
- **随机矩阵**:`rand(m, n)`生成m行n列的[0,1)区间内的随机数矩阵,`randi([low, high], m, n)`生成指定范围内的整数随机矩阵。 2. **矩阵操作** - **算术运算**:包括加法`+`、减法`-`、乘法`*`(对应元素乘法...
- **示例**:计算随机生成方阵的行列式。 ##### 2.8 DIAG — 对角矩阵构造/提取 - **用途**:DIAG函数用于构造或提取对角矩阵。 - **用法**: - `B = diag(v)`: 使用向量`v`构造对角矩阵。 - `v = diag(A)`: 提取...
`randperm`函数的基本用法是`randperm(n)`,它会生成一个1到n之间(包括1,不包括n)的整数随机排列。例如,`randperm(6)`可能返回 `[2 4 5 6 1 3]`这样的序列,每次调用结果都会不同,因为该函数依赖于MATLAB的...
- `randperm(n)`:生成1到n的一个无重复随机排列。 - `shuffle`:将数组元素随机排列。 `genTrials`函数是一个自定义的实验设计函数,用于生成基于重复和因素的随机试验。它接受四个参数,用于控制块内和块间的...
- **背景**: 小明能够通过一系列操作,使原本随机排序的扑克牌最终按A到K的顺序排列。 - **解决方案**: 通过逆向操作来模拟整个过程,找出原始顺序。 - **实现步骤**: - 建立一个数组来表示扑克牌的最终状态。 - ...