■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#13554-0
ランダムな数字を重複なく配列に格納していく方法
ランダムな数字を重複なく配列に格納していく方法がわかりません。
お分かりの方ご教授ください。
#13556-0
RE#13554:ランダムな数字を重複なく配列に格納していく方法
> ランダムな数字を重複なく配列に格納していく方法がわかりません。
考え方を「配列に順番に格納された数字をランダムな順番にする」という
様にしてみましょう。
#丁度、買ったばかりのトランプ(順番に並んでますよね?)をシャッフル
#する感じかな。

方法としては、
1、配列に数字を順番に入れる
2、配列の上からに順に、ランダムで出した数字の場所(配列の)と入れ替える。
以上の手順でシャッフルされてますので、あとは上から順に取り出します。

#確かサンプル書いた方が居ました。サンプルが必要なら、
#過去ログとログビューワーをダウロードし、検索してみて下さい。
#と、言うか手順が判ればサンプルなんて見るまでも無いんですけどね
#13563-0
RE#13554:ランダムな数字を重複なく配列に格納していく方法
ずーっと前に作ったやつなんですが・・・。
MAXを指定してやると、1〜MAXまでの数字をランダムに並び替えてintRndの
配列に入れていくというものです。(きっと・・・)

参考になれば・・・

'結果
Public intRnd() As Integer

'1〜Maxの値の乱数を取得
Sub intRandom(ByVal Max As Integer)

Dim intData() As Integer
Dim i As Integer
Dim intTmp As Integer
Dim intCnt As Integer

ReDim intData(Max + 1) As Integer
ReDim intRnd(Max) As Integer

For i = 1 To Max
    intData(i) = i
Next i

Do

    If intCnt = Max Then
        Exit Do
    End If

    intTmp = Int(((Max - intCnt) * Rnd) + 1)
    intRnd(intCnt) = intData(intTmp)
    intCnt = intCnt + 1

    For i = 0 To Max - intTmp
        intData(intTmp + i) = intData(intTmp + i + 1)
    Next i

Loop

End Sub
このページと関連する記事:
#6936-0数値をランダムに取得2000-03-27(月) 14:49
#19684-0重複と乱数2002-02-05(火) 17:23
#9722-0ランダムな数値2000-04-19(水) 10:37
#20661-0ランダム関数でダブリなをなくす方法2002-04-24(水) 11:11
#41095-0順列のアルゴリズムについて2001-03-31(土) 12:27
#29927-0配列で「インデックスが有効範囲にない」と表示されます。2002-07-10(水) 11:24
#3966-01999年12月2日(木)11:121999-12-02(木) 10:49
#3102-0ランダムについて。1999-10-20(水) 22:22
#2322-1クイズ問題の出題について1999-07-29(木) 21:35
#10926-0「開く」と「名前を付けて保存」に関する質問2000-08-27(日) 22:46
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)