#はじめに
ゲーム製作においてRandomを使用する場面は多いと思います。
備忘録としてRandomクラスをまとめてみました。
なお、本記事ではUnityEngine.Random
について記載しています(System.Random
ではない)。
#Static Properties
###insideUnitCircle
半径1の円の内部の点をランダムに返す。
円形上にランダムに敵を出現させたい場合などに使用。
###insideUnitSphere
半径1の球体の内部の点をランダムに返す。
球体内部全てなので、浮いてるオブジェクトなどにも使用可能。
###onUnitSphere
半径1の球体の表面上の点をランダムで返す。
###rotation
ランダムなQuaternion
を返す。
###rotationUniform
一様な分布でランダムにQuaternion
を返す。
Random.rotation
では完全なランダムではないみたいです。ただ計算コストはこちらの方が高い。
###state
乱数生成器の内部状態のすべてを取得、または、設定する。
適当なタイミングでアプリを落としても、再度起動したときに続きからできるようにするために乱数を保存する。
###value
0.0と 1.0の範囲のランダムな数を返す。
0.0と1.0も含むことに注意。汎用性が高く、Randomクラスのプロパティで基本的に使うのはこれ。
#Static Methods
###ColorHSV
HSVでアルファ値(透明度)をもつランダムなColor
を返す。
パラメータで色相(hueMin,hueMax)、彩度(saturationMin,saturationMax)、明度(valueMin,valueMax)、アルファ値(透明度:alphaMin,alphaMax)を設定可能。
###InitState
シード値を指定し、ランダム数生成器の状態を初期化する。
システム時刻等で決定されるシード値を指定することで、同じ乱数の値を生成することができる。
シード値による擬似乱数については、以下の記事がわかりやすいです。
コンピューターの「ランダム」は本当にランダムなのか?
###Range
範囲を指定できる、Random.value
。
intで設定するか、floatで設定するかによって、戻り値の範囲に差がある点に注意。
#####int設定
\text{min}\leqq \text{return} < max
#####float設定
\text{min}\leqq \text{return} \leqq max
#まとめ
- Randomクラスは様々な乱数を生成するクラス。
-
Random.value
とRandom.Range
の使用頻度が圧倒的に高い。 -
Random.rotation
とRandom.rotationUniform
の違いは後日検証したい...