首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

两个各包含100个元素的数组A和B,A按顺序依次存放1-100这100个数,怎么打乱顺序,将A的这100个数存放到B中

2012-12-25 
两个各包含100个元素的数组A和B,A按顺序依次存放1-100这100个数,如何打乱顺序,将A的这100个数存放到B中两

两个各包含100个元素的数组A和B,A按顺序依次存放1-100这100个数,如何打乱顺序,将A的这100个数存放到B中
两个各包含100个元素的数组A和B,A按顺序依次存放1-100这100个数,如何打乱顺序,将A的这100个数存放到B中,使B中存放的这100个数显得毫无规律。
[最优解释]

Option Explicit

Sub Main()
    Dim A(1 To 100) As Long
    Dim B(1 To 100) As Long
    Dim lTmp As Long
    Dim i As Long
    Dim j As Long
    
    For i = 1 To 100
        A(i) = i
    Next
    
    '复制 A 到 B
    For i = 1 To 100
        B(i) = A(i)
    Next
    '洗牌:将 B(i) 与随机的 B(j) 交换
    Randomize
    For i = 1 To 100
        j = Int(Rnd() * 100) + 1
        lTmp = B(i)
        B(i) = B(j)
        B(j) = lTmp
    Next
    
    '查看结果
    For i = 1 To 100
        Debug.Print i, B(i)
    Next
End Sub

[其他解释]
Private Sub Command1_Click()
Dim i As Integer

    List2.Clear

    List1.Clear
    For i = 1 To 100
        List1.AddItem i
    Next i
End Sub

Private Sub Command2_Click()
Dim i As Integer, n As Integer

    Randomize
    Do While List1.ListCount
        If List1.ListCount = 1 Then
            List2.AddItem List1.List(0)
            List1.Clear
        Else
            n = Int(Rnd() * List1.ListCount + 0.5)
            If n >= List1.ListCount Then n = List1.ListCount - 1
            
            List2.AddItem List1.List(n)
            List1.RemoveItem n
        End If
    Loop
End Sub

[其他解释]
楼上的方法就可以了
[其他解释]
直接用rnd*100+1给数组B赋值是最快的,但是不能保证在数组B内不出现重复的数据.
----ms没说rnd的重复能力.

2L没必要给数组A赋值,A没有用,开始时直接赋值数组B算了



1L用了List,我用了集合.


Dim col As New Collection
Dim i As Long, b(1 To 100) As Long
Dim r As Long
For i = 1 To 100
col.Add i, CStr(i)
Next i
Randomize
For i = 1 To 100
        r = (Rnd * 100 + 1) Mod col.Count + 1
        b(i) = col.Item(r)
        col.Remove (r)
Next i
For i = 1 To 100
Debug.Print b(i);
Next i

热点排行