- ベストアンサー
乱数とは・・・?
質問なんですが、配列の中身が、( AA(10) ) AA(1) = "りんご" AA(2) = "ringo" AA(3) = "みかん" AA(4) = "mikan" …10まで日本語→ローマ字の繰り返し という形で、これを乱数でバラバラにして、AA(1)とAA(2)(同様に3と4)を一塊としてlabel 1,2に時間経過で表示したいのですが、 時間経過で表示は出来たのですが、乱数の使い方がよく分からないのでランダムに表示されません。 もしかしたら、1と2をセットとして表示というのは無理なんでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
配列の使い方は既出の回答で分かると思います。 Dim AA(5,5) as string の2次元配列でもいいし、AA(5) BB(5)の1次元配列2つでもOKです。 それを全部定義した後で、RNDOMIZE関数で乱数表のデフォルトを 変えれば起動ごとに違う乱数を取ってきます。 以下はサンプルです。 Dim AA(5) As String Randomize -Time AA(1) = "1" AA(2) = "2" AA(3) = "3" AA(4) = "4" AA(5) = "5" X = CInt(Rnd(1) * 4 + 1) Me.Label1.Caption = AA(X)
その他の回答 (4)
- yastak2006
- ベストアンサー率56% (35/62)
乱数とは乱数表の頭から順番に決まった値を取ってきます。 なので、RNDだけだと毎回決まった値になるわけです。 RNDMIZEを一番最初に記述するだけでシステムタイムから乱数の デフォルト位置を変える作業が行われます。 昔のVBではRNDMIZE 値で乱数のデフォルトを明示しなくてはなりませんでしたが、.NETでは暗黙的にやってくれるみたいです。
- imogasi
- ベストアンサー率27% (4737/17069)
配列の要素が10個あるとして、1と2、3と4、・・が組みになっているのなら 1,2,3,4、5(5以下)の乱数を発生し、発生した乱数Nの (N-1)*2+1と(N-1)*2+2の要素の配列を取り出せばよいだけ と思いましたが違いますか。 ポイントをはずしている場合はお詫びします。
お礼
参考にさせて頂きました。 ありがとうございました。
- KenKen_SP
- ベストアンサー率62% (785/1258)
プログラムを作成している環境は? VB6、VB.Net、VB2005、VBA ? この情報で回答が全然異なってくるので、大切ですよ。
補足
すいません。VB.NETです。
- popesyu
- ベストアンサー率36% (1782/4883)
乱数で配列をバラバラにしてというのは一々、配列をしなおしているというようなことでしょうか? なんか複雑怪奇にしていることがうまくいかない理由か、それとも乱数の発生を同じにしているとかその辺でしょうかね。 ・乱数でバラバラにするのではなく、選択する値を毎回ランダムにする ・乱数の種を二つに分ける で下記のようにしてみるのはどうでしょう。 Dim AA(1 To 5) Dim BB(1 To 5) Dim x1 As Integer,x2 as Integer Dim y1 As Integer,y2 as Integer AA(1) = "りんご" AA(2) = "みかん" AA(3) = "きゅうり" AA(4) = "なす" AA(5) = "うんこ" BB(1) = "ringo" BB(2) = "mikan" BB(3) = "kyuuri" BB(4) = "nasu" BB(5) = "unko" x1 = Int(Rnd * 5) + 1 y1 = Int(Rnd * 5) + 1 x2 = Int(Rnd * 5) + 1 y2 = Int(Rnd * 5) + 1 MsgBox (AA(x1) & "/" & BB(y1) & Chr(10) & AA(x2) & "/" & BB(y2))
お礼
参考にさせて頂きました。 ありがとうございました。
補足
お手数かも知れませんが、Randomize関数の記述の仕方を教えてもらえないでしょうか?持っている参考書のは載っていないので・・。