ID非公開さん
2022/6/29 10:11
2回答
VBAについて質問です。 0〜9までの数字をランダムに並び替えるマクロを作りたいです。 r=Int (Rnd()*10)で乱数を生成しました。
VBAについて質問です。 0〜9までの数字をランダムに並び替えるマクロを作りたいです。 r=Int (Rnd()*10)で乱数を生成しました。 ランダムに並び替えるのがわからなくアドレスいただきたいです。 よろしくお願いします。
Visual Basic・78閲覧
ベストアンサー
重複なしの乱数を生成する場合は、通し番号の配列を用意しておいて、ランダムに並び替えるという作業を行う必要があります。 以下サンプルです。 Sub NDupRnd() Dim RndAry(0 To 10) As Long Dim i As Long, j As Long, cnt As Long For cnt = 1 To 10 RndAry(cnt) = cnt - 1 '配列に0~9を設定 Next For cnt = 1 To 1000 '並び替えする回数 i = Int(Rnd() * 10) + 1 j = Int(Rnd() * 10) + 1 If i <> j Then RndAry(0) = RndAry(i) '空きスペースにiの値を代入 RndAry(i) = RndAry(j) 'iにjの値を代入 RndAry(j) = RndAry(0) 'jに空きスペースに入れておいたiの値を代入 End If Next For cnt = 1 To 10 Debug.Print RndAry(cnt) Next End Sub
質問者からのお礼コメント
ありがとうございました!!
お礼日時:7/5 8:11