Unity C#でランダムな値(乱数)を得る方法/Random.value、Random.Rangeの使い方

IT

Unityでランダムな数字を求める方法です。Random.valueでは0~1の乱数、Random.Rangeでは最小値~最大値の間の乱数を得ることができます。

スポンサーリンク

Random.value

ランダムな0~1の値を取得
Random.value
unity random1
ボタンを押すとスクリプトが実行されるものがあるとして、
//Unity C#
using UnityEngine.UI;

public void ButtonClick()
{
float n;
n = Random.value;
GameObject text = GameObject.Find("Text");
text.GetComponent<Text>().text = n.ToString();
スクリプトはこういった感じで、float値nに対してRandom.valueを代入することで、
unity randomvalue1
0から1の間のランダムな数値を求めることができます。ExcelでいうRand関数にあたります。

Random.Range

ランダムな最小値~最大値の間の数を取得
Random.Range(最小値,最大値)
※整数を求める場合最大値未満、小数の場合最大値を含む値が返される
//Unity C#
using UnityEngine.UI;

public void ButtonClick()
{
float n;
n = Random.Range(0, 10);
GameObject text = GameObject.Find("Text");
text.GetComponent<Text>().text = n.ToString();
さっきのコードのRandom.valueの部分を、Random.Range(0, 10)に差し替えて実行してみます。
unity randomrange
今度は、0以上10未満の整数が表示されます。
//Unity C#
n = Random.Range(0f, 10f);
最小値、最大値にfを付けてやれば、
unity randomrange2
表示される値も小数付きになります。

int値に乱数を代入

' vba
int n;
n = Random.Range(0, 10);
Random.valueでは不可ですが、Random.Rangeの値をint値に代入することで、最初から整数で乱数を求めることが可能です。
' vba
int n;
n = Random.Range(0, 10) * 10;
そのまま計算に使うこともできます。

int値の場合最大値が出ない

//Unity C#
int n;
n = Random.Range(1, 7);
たとえばサイコロを作る場合、1,6ではなく、1,7で最小値、最大値を指定します。
unity random
Random.Rangeでint値を求める場合、最大値は出なくなります(公式)。float値の場合、最大値も含んだ乱数が返されます。
やりたいことから逆引きするUNITYの使い方まとめ
Unityをやりたいことから学習していけるよう、機能・用途別にまとめたページです。C#の命令別の逆引きは現時点で作っていません。2019の時期に書き始めているので、それより前のバージョンについては言及しません。

コメント