tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
任意の排他的な数列をつくるには(VB6.0) ( No.0 )  [親スレッドへ]
日時: 2009/12/27 15:25
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[文字列処理][アルゴリズム][]                                 *
* キーワード:並べ替え,入れ替え,,,,                                          *
***********************************************************************************

Q.

例えば1,2,3,4,5という数字を3,1,2,5,4のように、バラバラな順番にする方法ってあるんでしょうか?
つまり、同じ数字は2度と表れず、かつ、ランダムに(実行毎に毎回異なる)数列です。

A.

配列に先に1〜5を設定しておき、ランダムにその配列の同士の中身を入れると重複することなくランダムな順にできます。
トランプのカードをきるのと同じ発想です。

---------------------------------------------------------------------------------
VBで任意の排他的な数列をつくるには - けいこ 2002/09/29-16:23 No.749
---------------------------------------------------------------------------------

ありがとうございます。さっそく作ってみました。
解決して、頭すっきりです。う〜ん、思いつきませんでした。

Private Sub subShaffle(shMaxNum As Integer) ’shMAXまでの数の排他数列
    Dim rndmNum As Integer
    Dim shKaisu As Integer
    Dim shI As Integer
    Dim tmpNum As Integer
    
    For shI = 1 To shMaxNum
        shNum(shI) = shI
    Next
    
    For shI = 1 To shMaxNum
    
        Randomize
        rndmNum = Int((shMaxNum - 1 + 1) * Rnd + 1)
        tmpNum = shNum(shI)
        shNum(shI) = shNum(rndmNum)
        shNum(rndmNum) = tmpNum
        
    Next
    
'    MsgBox shNum(1) & shNum(2) & shNum(3) & shNum(4) & shNum(5)
    
End Sub



 [スレッド一覧へ] [親スレッドへ]