こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

乱数とは・・・?

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

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

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

投稿日時 - 2006-11-23 21:53:07

QNo.2558121

困ってます

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

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

投稿日時 - 2006-11-25 02:48:20

補足

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

投稿日時 - 2006-11-26 20:23:04

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

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

参考URL:http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh04/cformwsh04_03.html

投稿日時 - 2006-11-27 00:53:20

ANo.4

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

投稿日時 - 2006-11-25 18:11:20

お礼

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

投稿日時 - 2006-11-27 13:54:49

ANo.2

プログラムを作成している環境は?
VB6、VB.Net、VB2005、VBA ?

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

投稿日時 - 2006-11-24 20:38:47

補足

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

投稿日時 - 2006-11-25 22:29:13

ANo.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))

投稿日時 - 2006-11-24 01:39:46

お礼

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

投稿日時 - 2006-11-27 13:33:28

あなたにオススメの質問