| 日時: 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
 
 
 |