【コピペでUnity】爆速でRandomを実装、整数から小数まで!

Unity
Unity

ランダムな数を実装したい人

ランダムってRandomを使えばいいのかな。
サイコロで1~6を出したいんだけれど、引数は1と7だっけ?

こんな疑問にお答えします。

 

本記事の内容

●Randomのサンプルコード
●Randomのコード解説

この記事を書いている私は12才からフルスクラッチでゲームを作っています。
またコンパイラを専門として情報理工学の博士まで進学、中退をしており、プログラミング言語の文法にも関わる論文を書いていました。

 

本記事ではサクっと使える実行済みのコードを紹介しつつ、少しクセのある引数の仕様についても簡単に解説します。

※実行環境
Unity2021.3.1f1
Windows 10

 

Randomのサンプルコード

ランダムな値が欲しいところにコピペをしましょう。

//シード、初期値の設定
Random.InitState(_seed);

//ランダムな整数を生成、下限を含む、上限は含まない
_int = Random.Range(-3, 5);

//ランダムな実数を生成、下限、上限を含む
_float = Random.Range(-10.0f, 10.0f);

//0~1のランダムな実数を生成、下限、上限を含む
_float = Random.value;

 

●_seed
ランダムな数値を発生させるための初期値

●_int
ランダムな整数

●_float
ランダムな実数

 

Randomのコード解説

ランダムな整数

Range関数にint型の引数を2つ与えると、ランダムな整数を生成できます。
上限は含まないので、

●Random.Range(0, 10);→0~9
●Random.Range(-3, 5);→-3~4

のような挙動になります。

 

ランダムな実数

Range関数にfloat型の引数を2つ与えると、ランダムな実数を生成できます。
上限を含むので、

●Random.Range(-10.0f, 10.0f);→-10.0~10.0
●Random.Range(1.5f, 4.5f);→1.5~4.5
●Random.Range(0.0f, 1.0f);→0.0~1.0

のような挙動になります。

 

0~1の実数を得たい場合はvalueがお手軽です。
Random.Range3つ目の例である、

●Random.Range(0.0f, 1.0f);

の記述と全く同じ挙動です。

 

InitState

ランダムな数値、乱数と呼んだりしますが、これらを生成するアルゴリズムには「シード」と呼ばれる初期値が必要です。
手元のUnityではシード値が起動の度に変わるようになっていたので、どちらかというと乱数のパターンをいくつか固定したいときに使うのがオススメです。

 

意外と紛らわしいRandomの使い方でした。

Unityはいいぞ。

コメント

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