【Unity】Randomまとめ


はじめに

ゲーム製作において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.valueRandom.Rangeの使用頻度が圧倒的に高い。
  • Random.rotationRandom.rotationUniformの違いは後日検証したい...