乱数(ランダム)を使ってより面白いプログラムに挑戦しよう。
乱数を扱うことができ、うまく使うと、 コンピュータ(プログラム)上で、きまぐれや、偶然などを表すことが可能となります。
ランダム/乱数とは、でたらめ/予想がつかない数のこと。
見えない袋に入った数字が書かれたボールを取り出すようなもの。
VBで乱数を扱うには、Rnd()関数を用い、「Rnd(1)」を 実行すると、0〜1までの適当などれかの数値(小数)となる。
使用例;
x = Rnd(1)このようにすると、変数xにランダムな0〜1までのどれかの数値が代入されることになる。
実際には計算式の中でRnd(1)を利用するのが一般的である。
括弧内の数字「1」は0〜「1」までという意味ではなく、省略も可能で、通常正の整数を指定する。
VBのプログラムで、さいころの目を出すプログラムを作ってみましょう。
さいころは、1〜6の整数がランダムに出るものです。
次のようにプログラムするのがベストです。
Randomize
x = Int( Rnd(1) * 6 ) + 1
Label1.Text = x
このようにすると、xに1から6までの数値(整数)が代入され、結果的にLabel1にさいころの目が表示される。
#「 Debug.Print x
」としても値を表示して確認することは可能。
最初の Randomaize
という命令は、ランダム(Rnd関数)を使うための準備として必要となる。
つまり RandomizeはRndを使う場合の約束として1回だけ最初にどこかで実行(プログラム)させておく 。
Randomizeが無くても動くことは動くが、忘れずに書いておこう。また、最初に1回のみ実行されるように注意しよう。
2行目の右辺は、まずRnd(1)により0〜1(未満)の小数となり、これに6をかけることで、0から6未満の適当な値(少数)となり、更にInt()関数によってその値が無理矢理整数に切り捨てられる。つまりここで0から5までの適当な整数となる。更に
+1をすることにより、1から6までの整数となる。
よって、コンピュータでサイコロを振ったと同じことになる。
さいころを複数回振りたければ全く同様にすればよい。プログラムは一度しか使えない命令など基本的にはない。
例えばこのサイコロの目によって、きまぐれや、偶然などを表すことが可能。
もしRPGゲームを作ろうとした場合、さいころを振って1が出れば強い敵、6がでれば弱い敵を出現させるなど。。。
もちろん、1〜6までの整数である必要はなく、同じようにランダムを使えば、使い方は無限大。工夫次第によって無限の可能性がある。
サイコロのように1〜6の整数ではなく、例えば、1〜100の整数をランダムに選びたいのであれば、次のようにすればよい。
x = Int( Rnd(1) * 100 ) + 1
ランダム・サイコロの利用について
ランダムを利用するとサイコロが実現できることがわかった。
では、サイコロをどのようなプログラムに利用できるかを考えてみよう。サイコロゲーム、つまりサイコロを振ってその目で何かをするようなゲーム、また、すごろく(双六)のようなゲームには勿論利用可能。
トランプゲーム、例えばポーカーのプログラムにサイコロは利用・応用できるだろうか?
宝箱を開けたら、ミミックが出るのか、ゴールドが出るのか、伝説の鎧が出るのかのプログラムにサイコロは利用・応用できるだろうか?
プログラムはアイデア次第!命令は使い方に厳しい文法はあるが、何のためにどのように利用するかは各プログラマーの自由!
良いアイデアで、面白いことが実現できるよう、色々考えてみよう!!