乱数について


目次

乱数について

1.はじめに

ここではゲームにおける乱数について、思いついたことを書いていきます。

2.ゲームにおける乱数

まず乱数とは何かというと、
「不確実性を擬似的に表現するもの」
です。

プログラム的には、何が返ってくるか分からない数値を返す、というものです。

これをゲームに使うことを考えてみます。
例えば、RPGにおいてドラゴンという敵がいるとします。
ドラゴンは以下のような行動パターンを取るとします。

  • 通常攻撃
  • 炎を吐く
  • 防御
  • 逃げる

そして行動パターンの選択方法として、確率を使用するとします。

  • 通常攻撃…60%
  • 炎を吐く…20%
  • 防御…10%
  • 逃げる…10%

ここで乱数を使用します。
乱数は何の目が出るか分からないサイコロのようなものです。
乱数を1から10の間で発生させ、

  • 1〜6の場合は、通常攻撃。
  • 7〜8の場合は、炎を吐く。
  • 9の場合は、防御。
  • 10の場合は、逃げる。

どうでしょうか。
こうなってしまうと、戦略も何もありません。
相手は何をするか全く読めないので、戦略の立てようがありません。

乱数をそのまま使い、偏りをなくしてしまうと、ゲームはつまらなくなる恐れがあります。
つまり、何らかの規則性を持たせて使用するのが、乱数の正しい使い方といえます。

3.具体例

ゲームにおける乱数の使用パターンを考えてみます。
私の作ったゲームのダンジョンキーパーでの乱数の使用例を元に考えてみます。
(説明:ダンジョンを探索し、最下層にいるダンジョンキーパーを倒すというRPGゲームです)
そのゲームの中では、「確率の分布」と「数値の補正」として、乱数を使用しています。

確率の分布

先ほど説明した、行動パターンに不確実性を持たせるということです。
例としては以下のようになります。
アイテムの出現率/イベントの発生率/階段の位置など


数値の補正

これは、毎回同じ結果を出さないように、結果に不確実な部分を持たせます。
例としては、
攻撃ダメージの補正/回復値の補正
です。

攻撃ダメージの補正について、例えば
LV20でロトの剣を装備していた場合において、ドラゴンに50のダメージを与えるとします。
しかし、いつも50のダメージでは、なんとなく面白くありません。
そこで、ダメージには±10%の補正値を加えるとします。
そうすると、ダメージの最大値としては、50+(50×0.1)=55、
最小値として、50−(50×0.1)=45となり、
45〜55の間でダメージは安定しなくなり、ゲームらしい面白さが出るわけです。
(現実においてもいつも同じダメージを与えられるとは限らないですよね)

いかがでしょうか。
まあ、今回の内容を知らなくてもゲームを作っていくうちに、乱数の使い方は身につくわけではありますが…。
たまには乱数の意味について考えるのも、役に立つかもしれません。。。

ちなみに昔のゲームは乱数をあまり使用しなかったそうです。
乱数を使用しないと、不確実性はないので、覚えゲーになってしまうわけですが、
パターンを覚えてサクサククリアできるのが面白かったような気がします。

一度は乱数を使わずにゲームを作ってみるのも面白いかもしれません。

以上、.1064でした。