基本的なランダム
using UnityEngine;
//ランダムサンプルクラス
public class RandomSample : MonoBehaviour
{
int seed = 1; //ランダム用のシード値
int rangeMin_int = 0; //乱数の最小値(int型)
int rangeMax_int = 100; //乱数の最大値(int型)
float rangeMin_float = 0; //乱数の最小値(int型)
float rangeMax_float = 100.0f; //乱数の最大値(int型)
void Start()
{
//Seed値
Random.InitState(seed);
//0.0f ~ 1.0fの間
Debug.Log(Random.value);
//rangeMin_intとrangeMax_int-1の間(0 ~ 99)
Debug.Log(Random.Range(rangeMin_int, rangeMax_int));
//rangeMin_floatとRangeMax_floatの間(0 ~ 100.0f)
Debug.Log(Random.Range(rangeMin_float, rangeMax_float));
}
}
Random.value
//0.0f ~ 1.0fの間
Debug.Log(Random.value);
Random.valueは、0.0f ~ 1.0fの値をランダムで返してくれます。返ってくる値は、浮動小数点型のfloat型の値が返ってきます。
Random.Range(最小値 ,最大値)
//rangeMin_intとrangeMax_int-1の間(0 ~ 99)
Debug.Log(Random.Range(rangeMin_int, rangeMax_int));
//rangeMin_floatとRangeMax_floatの間(0 ~ 100.0f)
Debug.Log(Random.Range(rangeMin_float, rangeMax_float));
Random.Rangeは、最小値と最大値を決めて、その範囲内の値をランダムで返してくれます。
最小値と最大値には、int型とfloat型を入れることが出来ます。
1つ注意したいのが、int型の場合は、帰ってくるランダムの値の範囲が、最小値 ~ 最大値-1となってしまうことです。つまり、Random.Range(0,100)と入れると、0 ~ 99の値の範囲からランダムで値が返ってきます。
Random.InitState(シード値)
//Seed値
Random.InitState(seed);
random.InitStateは、ランダムな値を生成するための、シード値を設定することが出来ます。
シード値は、ランダムな値を生成するときに、最初に設定する値のことを言います。プログラムのランダムな値(乱数)は、完全にランダムな値を生成しているわけではなく、プログラムごとに何かしらのルールに沿って、計算されたランダムのような値が使われています。
なので、シード値を毎回同じものにすれば、何度実行しても同じ値が返ってくることになります。
逆に言えば、毎回違う値を入れれば、毎回違うランダムな値が返ってきます。
Random.InitState( System.DateTime.Now.Millisecond );
それっぽいランダムを実装したい場合は、seed値に日付データを入れることで、一度きりの値を再現することが出来ます。