随机排列n*n方阵

49 篇文章 0 订阅
45 篇文章 0 订阅

将n组1-n随机置于n*n的单元格中,使得每行,每列都是1-n的一个全排列

 

  1. Sub Perm()
  2. Dim n As Long, i As Long, j As Long, arr(), brr(), t As Long
  3. n = 20
  4. ReDim arr(n - 1, n - 1)
  5. ReDim brr(n - 1)
  6. For i = 0 To n ^ 2 - 1
  7. arr(i / n, i Mod n) = (i / n + i) Mod n + 1
  8. Next
  9. Randomize
  10. For i = n - 1 To 0 Step -1
  11. t = Int(Rnd * i + 1)
  12. For j = 0 To n - 1
  13. brr(j) = arr(j, t)
  14. Next
  15. For j = 0 To n - 1
  16. arr(j, t) = arr(j, i)
  17. arr(j, i) = brr(j)
  18. Next
  19. t = Int(Rnd * i + 1)
  20. For j = 0 To n - 1
  21. brr(j) = arr(t, j)
  22. Next
  23. For j = 0 To n - 1
  24. arr(t, j) = arr(i, j)
  25. arr(i, j) = brr(j)
  26. Next
  27. Next
  28. [a1].Resize(n, n) = arr
  29. End Sub

执行结果:

 

1191468918101611134201735152712
3116810112012181315621957174914
1083151718719520213961214411161
1614913413511681915121820101727
1412719121139461713101618815205
2201579101911171214511846163813
1715102451461279201613191111838
1513820231241057181411171991616
2018135781791510123191624141611
1816113561571381011714202121949
1311618201102835161291517714194
7520121415416217191063911181318
8611315165173182011741012291419
1210517192091724151181416613183
6419111314315116189528102071217
1194161819820613141071315512172
9721416176184191128511133101520
1917124671681491121815131320510
5318101213214201517841791961116
4217911121131914167320681851015

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值