「乱数」をご存じでしょうか。何ら規則性のない数値の並びのことです。多くのプログラミング言語には,乱数を生成させる仕組みが用意されています。今回は,乱数を使ってちょっぴり便利で遊べるプログラムをいくつか作ってみましょう。どれも短いプログラムなので,プログラミング経験がない人でも,十分取り組めるはずです。ぜひ試してみてください。

実験の準備

 まずは実験の準備です。今回の実験で必要なものは以下の二つです。

  • メモ帳
  • Windowsマシン

 メモ帳(notepad.exe)は,実験のためのプログラムを作るために使います。適当なテキストエディタでもOKです。Windowsマシンは,プログラムを動作させるために利用します。

0以上1未満の乱数を生成するRnd関数

 この実験では,VBScriptというプログラミング言語を使います。VBScriptでは,Rndという関数を利用することで,0以上1未満の乱数を生成させることができます。このRnd関数を通して,まず乱数とはどのようなものかを見てみましょう。

 Windowsのメモ帳を使って図1に示したプログラム(1行だけです)を記述し,RndTest.vbsというファイル名で保存してください。

図1●Rnd関数が生成する乱数を確認するプログラム
図1●Rnd関数が生成する乱数を確認するプログラム

 VBScriptで記述したプログラムは,.vbsという拡張子を付けて保存する約束になっています。メモ帳は,デフォルトでファイル名の拡張子を.txtにしてしまうので注意してください。ファイルを保存するウィンドウの「ファイルの種類」欄で,「すべてのファイル」を選択すれば,.txtという拡張子が付かなくなります(図2)。

図2●ファイルを保存するウィンドウ
図2●ファイルを保存するウィンドウ
[画像のクリックで拡大表示]

 RndTest.vbsのアイコンをダブルクリックすれば,プログラムが起動して,小さなウィンドウの中に乱数が表示されます(図3)。

図3●乱数確認プログラムの実行結果
図3●乱数確認プログラムの実行結果

現在時刻を乱数の種にする

 [OK]ボタンをクリックすると,プログラムが終了します。再度RndTest.vbsのアイコンをダブルクリックしてプログラムを起動してください。何かに気がつきましたか?

 「よくわからない」という場合は,プログラムを終了せずに,RndTest.vbsのアイコンをダブルクリックして同じプログラムを二つ起動し,それらのウィンドウを並べてみてください。これで気がつきましたね。何度プログラムを起動しても,生成される乱数の値が同じなのです。これでは,使い物になりません。

 そもそもコンピュータ自体には,でたらめな数値である乱数を生成する機能はありません。VBScriptのRnd関数は,特定の計算式を使って,人間の目にはでたらめに見える数値を得ているのです。このような乱数を「擬似乱数」と呼びます。一つのプログラムの中でRnd関数を繰り返し使えば,そのつど異なる乱数が生成されますが,プログラムを起動し直すと,同じ乱数が生成されてしまいます。

 プログラムを起動するたびに異なるパターンで乱数を生成させるには,「乱数の種」を変える必要があります。乱数の種とは,擬似乱数を得る計算式で使われる値です。プログラムを起動するたびに乱数の種を変えるには,コンピュータの現在時刻を使うのが定番テクニックです。VBScriptでは,Timer関数で現在時刻(午前0時からの経過時間を秒で返す)を取得できます。

 RndTest.vbsの内容を,図4に示した内容に書き換えてください。Randomizeは,乱数の種を設定する命令です。ファイルを上書き保存したら,何度か実行してみましょう。今度は,毎回異なる乱数が表示されるはずです。

図4●乱数の種を設定する
図4●乱数の種を設定する