扑克洗牌调整顺序,算法怎么处理
扑克洗牌调整顺序,算法怎么办?
扑克洗牌调整顺序,算法怎么办?
1.给下列数据赋值c(1),c(2),c(3),c(4),c(5),c(6),c(7),c(8),c(9),c(10),c(11),c(12),c(13),好做
2.取随机数n=int(rand()*13)+1,例如n=6
3.调整后的顺序为c(1),c(2),c(3),c(4),c(5),c(7),c(8),c(9),c(10),c(11),c(12),c(13),c(6)
第6个数移到最后,c(7),c(8),c(9),c(10),c(11),c(12),c(13),各前移1个位置。
4.再取随机数n=int(rand()*12)+1,例如n=3
5.上面的顺序调整后的顺序为c(1),c(2),c(4),c(5),c(7),c(8),c(9),c(10),c(11),c(12),c(13),c(3),c(6)
第三个数移到倒数第2的位置,第4、5、6、、、11个数个向前移动一个位置。
6.再取随机数n=int(rand()*11)+1,例如n=5
7.再调整后的顺序为c(1),c(2),c(4),c(5),c(8),c(9),c(10),c(11),c(12),c(13),c(7),c(3),c(6)
8.、、、、、
9.、、
连续操作5次,怎么办?各位老师出手谢谢
------解决方案--------------------
用数组也可以呀。不过每抽一张牌就搬移所有其他牌的做法很滑稽,完全用不着。
扑克洗牌调整顺序,算法怎么办?
1.给下列数据赋值c(1),c(2),c(3),c(4),c(5),c(6),c(7),c(8),c(9),c(10),c(11),c(12),c(13),好做
2.取随机数n=int(rand()*13)+1,例如n=6
3.调整后的顺序为c(1),c(2),c(3),c(4),c(5),c(7),c(8),c(9),c(10),c(11),c(12),c(13),c(6)
第6个数移到最后,c(7),c(8),c(9),c(10),c(11),c(12),c(13),各前移1个位置。
4.再取随机数n=int(rand()*12)+1,例如n=3
5.上面的顺序调整后的顺序为c(1),c(2),c(4),c(5),c(7),c(8),c(9),c(10),c(11),c(12),c(13),c(3),c(6)
第三个数移到倒数第2的位置,第4、5、6、、、11个数个向前移动一个位置。
6.再取随机数n=int(rand()*11)+1,例如n=5
7.再调整后的顺序为c(1),c(2),c(4),c(5),c(8),c(9),c(10),c(11),c(12),c(13),c(7),c(3),c(6)
8.、、、、、
9.、、
连续操作5次,怎么办?各位老师出手谢谢
------解决方案--------------------
用数组也可以呀。不过每抽一张牌就搬移所有其他牌的做法很滑稽,完全用不着。
Option Explicit
Dim c(1 To 13) As Integer, tmp(1 To 13) As Integer
Dim i As Integer
Private Sub Command1_Click()
Dim n As Integer
'buffer your current state
For i = 1 To 13
tmp(i) = c(i)
Next i
'pick up 5 cards and put them at the tail
Randomize
For i = 1 To 5
myLoop:
n = Int(Rnd * 13) + 1
If tmp(n) = 0 Then GoTo myLoop
c(14 - i) = tmp(n)
tmp(n) = 0
Next i
'restore your remain cards
n = 1
For i = 1 To 13
If tmp(i) > 0 Then
c(n) = tmp(i)
n = n + 1
End If