ランダムな数を実装したい人
ランダムってRandomを使えばいいのかな。
サイコロで1~6を出したいんだけれど、引数は1と7だっけ?
こんな疑問にお答えします。
本記事の内容
●Randomのサンプルコード
●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
●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
●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はいいぞ。
コメント