• ベストアンサー

ランダム表示

こんにちわ。 ボタン”1”を押すごとにa、b、c、d、eの5枚写真を順不同(ランダム)に表示させる方法を教えて下さい。 出来れば表示率も操作したいです。 例えば aは5% bは15% cは20% dは25% eは35% というふうに表示率も操作したいのです。 また、 (※1)ボタン”1”[押す]→写真[表示]→ボタン”1”[押す]→写真消える(消えたときにはa~dとは別の画面(待ちうけ画面1種類みたいなもの)が表示される)→※1へ戻る(繰り返し) としたいのですが・・・。 どんなコードを作ればよいのでしょう? ランダマイズとifとを組み合わせれば出来そうなぐらいしか分かりません。 (それぐらい素人です。) よろしくお願いします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 ベタなやり方ですが、ランダム関数(Rnd)を使う方法です。 Select Case Int(100 * Rnd + 1)   Case 1 To 5     (aを表示する処理)   Case 6 To 20     (bを表示する処理)   Case 21 To 40     (cを表示する処理)   Case 41 To 65     (dを表示する処理)   Case 66 To 100     (eを表示する処理) End Select

その他の回答 (3)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.4

#2のものです。 Int関数は切り捨てなのですね。 失礼いたしました。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

No.2の方へ。 Int関数は少数部分を取り除いた整数値を返す関数(つまり切り捨て)なので、問題ないですよ。 ちなみに、整数intLower~整数intUpperの範囲の整数をランダムに出すのは、 Int((intUpper - intLower + 1) * Rnd + intLower) です。 これは「Rnd関数」のヘルプに載っている例です。

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.2

#1の方へ補足です。 INT(100 * Rnd + 1) だとRNDが0.999のとき 101が発生しませんか? あと正確に5%にしたい場合では INT(100 * Rnd + 1) で1が発生するのはRNDが0.000~0.004999・・・のときで発生し 2が発生するのはRNDが0.005~0.014999・・・と 1と2の発生確率に対して2倍の誤差がでてしまいます。 (間違っていたらごめんなさい。)

関連するQ&A