電子書籍の厳選無料作品が豊富!

質問なんですが、配列の中身が、( AA(10) )

AA(1) = "りんご"
AA(2) = "ringo"
AA(3) = "みかん"
AA(4) = "mikan" …10まで日本語→ローマ字の繰り返し

という形で、これを乱数でバラバラにして、AA(1)とAA(2)(同様に3と4)を一塊としてlabel 1,2に時間経過で表示したいのですが、
時間経過で表示は出来たのですが、乱数の使い方がよく分からないのでランダムに表示されません。
もしかしたら、1と2をセットとして表示というのは無理なんでしょうか?

A 回答 (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)

この回答への補足

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

補足日時:2006/11/26 20:23
    • good
    • 0

乱数とは乱数表の頭から順番に決まった値を取ってきます。


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

参考URL:http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh0 …
    • good
    • 0

配列の要素が10個あるとして、1と2、3と4、・・が組みになっているのなら


1,2,3,4、5(5以下)の乱数を発生し、発生した乱数Nの
(N-1)*2+1と(N-1)*2+2の要素の配列を取り出せばよいだけ
と思いましたが違いますか。
ポイントをはずしている場合はお詫びします。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/27 13:54

プログラムを作成している環境は?


VB6、VB.Net、VB2005、VBA ?

この情報で回答が全然異なってくるので、大切ですよ。

この回答への補足

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

補足日時:2006/11/25 22:29
    • good
    • 0

乱数で配列をバラバラにしてというのは一々、配列をしなおしているというようなことでしょうか?


なんか複雑怪奇にしていることがうまくいかない理由か、それとも乱数の発生を同じにしているとかその辺でしょうかね。

・乱数でバラバラにするのではなく、選択する値を毎回ランダムにする
・乱数の種を二つに分ける
で下記のようにしてみるのはどうでしょう。

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))
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/27 13:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!