簡易洗牌程式使用VB.NET

 

我在過去的工作中有用過洗牌程式,我自己也會寫,今天就來給大家看一下我最近用VB.NET寫出來的簡單洗牌程式。

 

 Dim amount = 20  '總共多少個數字
        Dim i, j, temp As Integer
        Dim numbers(amount - 1) As Integer  '在VB中的陣列如果數字是N,實際這個陣列就會有N-1個資料,要注意

        amount = amount - 1
        For x = 0 To amount  '把數字照順序存入陣列
            numbers(x) = x + 1
            Console.Write(numbers(x).ToString + "  ")
        Next
        Console.WriteLine()
        Console.WriteLine("----------------------------------")

        Randomize()  '要加入這行才會每次的亂數都不一樣

        '任意一個號碼和任意一個號碼位置對換,重複一直做就可以達到洗牌的效果
        For x = 0 To amount
            i = CInt(Rnd() * amount)
            j = CInt(Rnd() * amount)
            temp = numbers(i)
            numbers(i) = numbers(j)
            numbers(j) = temp
        Next

        For Each item In numbers '印出洗牌後的結果
            Console.Write(item.ToString + "  ")
        Next

        Console.WriteLine()

 

 

這是最簡單的洗牌方式,簡單但是沒有效率,只有幾百筆資料要洗牌沒有問題,但如果要幾百萬筆資料做洗牌,就不能用這種方式,要用更進階的方式洗牌。要把這些資料分組,然後以組別為單位來洗牌,組別裡面還有更小的組別,這樣子再把更小的組別做洗牌,這樣才可以有效率,這部分比較複雜,有空我再來為大家介紹。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 波羅、希夏普2020 的頭像
    波羅、希夏普2020

    希夏普2020的程式天地

    波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()