• ベストアンサー

乱数とは・・・?

質問なんですが、配列の中身が、( AA(10) ) AA(1) = "りんご" AA(2) = "ringo" AA(3) = "みかん" AA(4) = "mikan" …10まで日本語→ローマ字の繰り返し という形で、これを乱数でバラバラにして、AA(1)とAA(2)(同様に3と4)を一塊としてlabel 1,2に時間経過で表示したいのですが、 時間経過で表示は出来たのですが、乱数の使い方がよく分からないのでランダムに表示されません。 もしかしたら、1と2をセットとして表示というのは無理なんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

配列の使い方は既出の回答で分かると思います。 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)

noname#30978
質問者

補足

お手数かも知れませんが、Randomize関数の記述の仕方を教えてもらえないでしょうか?持っている参考書のは載っていないので・・。

その他の回答 (4)

回答No.5

乱数とは乱数表の頭から順番に決まった値を取ってきます。 なので、RNDだけだと毎回決まった値になるわけです。 RNDMIZEを一番最初に記述するだけでシステムタイムから乱数の デフォルト位置を変える作業が行われます。 昔のVBではRNDMIZE 値で乱数のデフォルトを明示しなくてはなりませんでしたが、.NETでは暗黙的にやってくれるみたいです。

参考URL:
http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh04/cformwsh04_03.html
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

配列の要素が10個あるとして、1と2、3と4、・・が組みになっているのなら 1,2,3,4、5(5以下)の乱数を発生し、発生した乱数Nの (N-1)*2+1と(N-1)*2+2の要素の配列を取り出せばよいだけ と思いましたが違いますか。 ポイントをはずしている場合はお詫びします。

noname#30978
質問者

お礼

参考にさせて頂きました。 ありがとうございました。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

プログラムを作成している環境は? VB6、VB.Net、VB2005、VBA ? この情報で回答が全然異なってくるので、大切ですよ。

noname#30978
質問者

補足

すいません。VB.NETです。

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

乱数で配列をバラバラにしてというのは一々、配列をしなおしているというようなことでしょうか? なんか複雑怪奇にしていることがうまくいかない理由か、それとも乱数の発生を同じにしているとかその辺でしょうかね。 ・乱数でバラバラにするのではなく、選択する値を毎回ランダムにする ・乱数の種を二つに分ける で下記のようにしてみるのはどうでしょう。 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))

noname#30978
質問者

お礼

参考にさせて頂きました。 ありがとうございました。

関連するQ&A