- ベストアンサー
ランダム表示
こんにちわ。 ボタン”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とを組み合わせれば出来そうなぐらいしか分かりません。 (それぐらい素人です。) よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。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)
#2のものです。 Int関数は切り捨てなのですね。 失礼いたしました。
- maruru01
- ベストアンサー率51% (1179/2272)
No.2の方へ。 Int関数は少数部分を取り除いた整数値を返す関数(つまり切り捨て)なので、問題ないですよ。 ちなみに、整数intLower~整数intUpperの範囲の整数をランダムに出すのは、 Int((intUpper - intLower + 1) * Rnd + intLower) です。 これは「Rnd関数」のヘルプに載っている例です。
- sha-girl
- ベストアンサー率52% (430/816)
#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倍の誤差がでてしまいます。 (間違っていたらごめんなさい。)