【Unity/C#】Random.Range(ランダムな値の生成)の基本と書き方

Unityコード専用検索

コードの型

最小値と最大値を指定して、その中から適当な数字を返してもらいます。

C#

// 1. 整数をランダムに決める(0, 1, 2, 3, 4 のどれか)
int randomInt = Random.Range(0, 5);

// 2. 小数をランダムに決める(0.0 〜 10.0 のどれか)
float randomFloat = Random.Range(0.0f, 10.0f);

コードの仕組み

Random.Range は、プログラムに「くじ引き」をさせるような命令です。

  • 「整数」と「小数」でルールが違う(重要!):
    • 整数(int)の場合: 最小値は「含む」が、最大値は「含まない」
      • Random.Range(0, 5) は、0, 1, 2, 3, 4 のどれかが選ばれます(5は絶対に出ません)。
    • 小数(float)の場合: 最小値も最大値も「両方とも含む」。
      • Random.Range(0.0f, 1.0f) は、0.0から1.0の間にあるすべての値が選ばれます。

活用例(ゲームでのランダム要素)

敵の出現位置をバラけさせたり、アイテムを落とす確率を決めたりするのに必須です。

C#

void SpawnEnemy()
{
    // 画面の左端(-5)から右端(5)の間のどこかに出現させる
    float randomX = Random.Range(-5.0f, 5.0f);
    
    // 生成を実行
    Instantiate(enemyPrefab, new Vector3(randomX, 5, 0), Quaternion.identity);
}

その他(重要ポイント)

  • なぜ最大値を含まないの?: C#の歴史的な仕様です。「個数を指定する」という感覚(0から5までの5個の数字)だと覚えれば分かりやすいですよ。
  • 同じ数字が出ることも: 何度も実行すれば、たまたま同じ数字が連続で出ることもあります。それが「ランダム」というものです。
  • シード値: 基本的には自動で毎回違う結果になりますが、もし「毎回同じランダムパターンにしたい(テスト用など)」場合は、Random.InitState() を使うこともあります。

初心者向けまとめ

Random.Range は、「コンピューターにサイコロを振らせる」ための命令です。

  • 「敵の出現場所を毎回変えたい」
  • 「コインを落とす確率を決めたい」
  • 「クリティカルヒットの判定をしたい」

コメント

タイトルとURLをコピーしました