随机排列n*n方阵

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

  1. SubPerm()
  2. DimnAsLong,iAsLong,jAsLong,arr(),brr(),tAsLong
  3. n=20
  4. ReDimarr(n-1,n-1)
  5. ReDimbrr(n-1)
  6. Fori=0Ton^2-1
  7. arr(i\n,iModn)=(i\n+i)Modn+1
  8. Next
  9. Randomize
  10. Fori=n-1To0Step-1
  11. t=Int(Rnd*i+1)
  12. Forj=0Ton-1
  13. brr(j)=arr(j,t)
  14. Next
  15. Forj=0Ton-1
  16. arr(j,t)=arr(j,i)
  17. arr(j,i)=brr(j)
  18. Next
  19. t=Int(Rnd*i+1)
  20. Forj=0Ton-1
  21. brr(j)=arr(t,j)
  22. Next
  23. Forj=0Ton-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. EndSub

执行结果:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值