RND()命令
プログラマーからひとこと
あなたがここを読んでいるということは、おそらくもうIF~THEN文を使いこなせるようになったころだと思います。いや、ビット演算子とかは、まあ、いいんです。「IF 条件文 THEN 命令」の形をおぼえていればそれでOKです。
おめでとう、それをおぼえたあなたはかなりイケてます。
このIF~THEN文と、ある命令さえあれば、もうゲームがひとつできてしまうのです。
けっきょくもうひとつ命令をおぼえるのかよ! と思うかもしれないですが、ここまで読んできたあなたにとっては、もうよゆうすぎるくらいの簡単さです。
重要な命令なのに簡単なんて、わりと世の中ちょろいもんです。
その命令は、RND()命令といいます。
でたらめな数
ワンパク「アール・エヌ・ディー命令……。リパブリック ・ナウ ・デッド のこと……か。」
神崎「いやいやいや。」
インテリ「ワンパク君は英語がニガテでも、そういうボキャブラリーは持ってるんだね。でもRNDは「でたらめ」って意味の「ランダム 」の略だよ。」
ワンパク「なんだと? デタラメをオレに教えようってのか! なかなかパンクだぜ、いいドキョウじゃねえか!」
神崎「なにもかもオカシイような……。やる気になってるからいいか。」
インテリ「じゃあカンタンな例から説明するよ。
A=RND(10)
RND()命令は、こういうカタチで使うんだ。」神崎「左のAは変数だね。」
インテリ「こうやって()でかこんだ数字と命令の組み合わせで、変数にトクベツなアクションをさせる命令は「関数 」というんだけど……ややこしいから、今は気にしなくてもいいかな。」
ワンパク「シンセツなんだかフシンセツなんだかわかんねェな! まあいいや、ツマリA=RND(10)と書いたら変数Aに10でRND()した数が入るんだろ? よくワカんねェけど。」
インテリ「ダイナミックなリカイだけど、かなり合ってるよ。じゃあRND関数でなにが起きるのか、このプログラムで見てみよう!
0001#. A=RND(10)
0002#. PRINT A
」0002#. PRINT A
RUN
8
OK
8
OK
神崎「変数Aに8が入った……ということだよね。」
インテリ「ところが、もう1回RUNすると、どうなるかな?」
RUN
7
OK
7
OK
ワンパク「ン? 同じプログラムなのになんでAに入る数字が変わってんだ?」
RUN
4
OK
RUN
0
OK
RUN
9
OK
4
OK
RUN
0
OK
RUN
9
OK
ワンパク「オイオイ、RUNするタビに違うコトになってるじゃねーか! デタラメもいいとこだぜ……。デタラメ……? ハッ!?」
インテリ「もう分かってきたかな。RND()は、「でたらめな数字を出す」という関数なんだ。
いまのプログラムは()の中に10が入ってるから、0~9までの10コのうちから数字をひとつ出すんだね。」
いまのプログラムは()の中に10が入ってるから、0~9までの10コのうちから数字をひとつ出すんだね。」
神崎「ゼロから始まるから、RND(10)と書いても一番大きい数字は9までなんだね。」
ワンパク「またコンピューターの「ゼロから数えはじめる」クセかよ……いつもながら、ピンとこねェぜ……。
まてよ……じゃあ、ゼロはいらねー、1から10で数えたいってトキはどうすりゃいいんだ?」
まてよ……じゃあ、ゼロはいらねー、1から10で数えたいってトキはどうすりゃいいんだ?」
神崎「えぇと、A=RND(11)にすれば……あれ、ダメだ。これでもゼロは出てきちゃうか。」
インテリ「ちょっと頭のタイソウになるから、これを読んでる人もどうすればいいのか考えてみてね!」
ワンパク「テメエ、その学習っぽさはハナにつくぜ! いいからサッサと教えやがれー!」
インテリ「では、答を見てみようかな。こういうコトさ!」
A=RND(10)+1
ワンパク「……ン?」
神崎「ああ! そうか! 0~9のどの数字が出ても、それに1を足したら1~10になるね!」
インテリ「モニタの前のみんなは気が付いていたかな?
同じように、10から100までの数字を出したいときは、RND(91)+10と書けばいいね。」
同じように、10から100までの数字を出したいときは、RND(91)+10と書けばいいね。」
ワンパク「ウーム……カンタンに言ってくれるが、コンピューター式の数え方はアタマがイテえぜ。
だいたい、この命令がなんのヤクに立つってんだ? ケッキョク、数字をデタラメに言ってるだけだろ?」
だいたい、この命令がなんのヤクに立つってんだ? ケッキョク、数字をデタラメに言ってるだけだろ?」
インテリ「いちばんよく見るランダムの使い方といえば、RPGのダメージかな。もちろんデタラメな数字だけがすべてじゃないけど、同じステータスのモンスターから同じ攻撃を受けても、ダメージの数はちょっとずつ違うだろう?」
神崎「よく「乱数 」って言われるやつだね。」
ワンパク「なるほど「ラン」ダムだから、「ラン」スウってことか。」
神崎「そ、それはちがうんじゃないかな……。」
インテリ「ほかにもアクションゲームの敵の動きにも使われたりするよ。たとえばコッソリRND(2)で0~1の乱数を出してみて、0なら左に、1なら右に向かう、とかね。」
ワンパク「言われてみれば、落ちゲーで次に落ちてくるブロックも乱数だしな……。オイオイ、コイツはかなり使える命令じゃねェのか!?」
ハカセ「さよう。ほとんどのゲームにはどこかで乱数が使われていると言っていいじゃろうな。せっかくじゃから、次回はジッサイに乱数を使ったゲームのサンプルプログラムも見せてしんぜよう。」
- RND()関数
- (変数)=RND(最大数)
ゼロから最大数マイナス1までのでたらめな数字を変数に入れます。
A=RND(10)で変数Aに0~9までの数字のうちどれかが入ります。
A=RND(10)+1とすれば、1~10になります。