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