Lesson.33 ランダム
ランダム
さて、もうこれでLesson.33で33回目ですが、いよいよこれで今回のVBS講座の新しく習うことは終わりです。
この後はすべて今まで習ったことの応用でプログラムを組み立てていくことととなります。
その前に最後のものとしてランダムというものを学ぶことにします。
皆さんも日常生活で適当に数字を出したりしてランダムを使うことはよくあると思います。
ランダムとは適当に選び出すことですよね。
例えばくじがそうですね。
くじは適当、ランダムに引いてこそ意味がありますよね。
VBSにはそのようなランダムを起こすことができないかというと、実はちゃんとできるのです。
乱数
ここではわかりやすい例として今回は「大吉」「中吉」「小吉」からなるおみくじを作ることにしましょう。
それぞれ出る確率は30%、50%、20%とします。
ランダムを起こすといっても、もちろんいきなりは「大吉」などをコンピュータが出すことはできません。
コンピュータが出せるのはランダムな数、「乱数」というものです。
アトランダムとランダム
完全にランダムなもの、つまり絶対にどのような手を使っても予想できないものを「アトランダム」、
ある規則にのっとって見かけ上ランダムに見せるのを普通の「ランダム」といいます。
コンピュータはアトランダムな乱数を出せるかというと、実は違います。
といっても人間にはとても予想できるようなものではないので、ほとんどアトランダムに近いものだと思ってかまいません。
実は時計の時間から導き出しているというのは余談です。
ところでアトランダムではない乱数を「擬似乱数」といいます。
VBSではこの擬似乱数というものを「rnd」というものを用いて発生させることができます。
rnd
rndは擬似乱数を発生させますが、この乱数は0~1までの少数が帰ってきます。
そしてもうひとつ大切なことがあります。
このrndを使う前は必ずぷろぐらむのrndを書く前のどこかに「randomize」ということを書いておいてください。
ではプログラムを書いてみましょう。
例:
Dim ret
ret = rnd()
if ret < 0.3 then
msgbox "おめでとう。大吉です。"
elseif ret < 0.8 then
msgbox "まあまあの中吉です。"
else
msgbox "小吉です。"
end if
このように使います。どうですか?
こんなに簡単におみくじが作れてしまいました。
乱数が使えると作れるプログラムの範囲もぐぐんと広がります。
練習
コイントスのプログラムを作れ。
※50%の確率で「表」と表示し、50%の確率で「裏」と表示させよ。
解答
Dim ret
ret = rnd()
if ret < 0.5 then
msgbox "表"
else
msgbox "裏"
end if