使用方法は以下の通り。2}コメントにも書きましたが範囲指定した場合、最大値に指定した値は乱数に含まれません。最大値-1までの値が乱数として取得できます。int型の正の数だけが取り扱われます。因みにUnityの乱数生成は.NETとは異なる、なり、UnityEngine.Rondomクラスがあり使用方法が微妙に異なりますがここでは取り扱いません。短時間でRandomクラスを複数インスタンス化すると乱数が同値になるしかし短時間で複数のRandomクラスのインスタンスを作成して乱数を生成すると同じ値になってしまいます。そのような場合、複数のインスタンスを作成するのではなく同じインスタンスを使用してNextメソッドを呼び出せば回避できますが、事情でそうできない場合もあります。以下のようなコードを書いてしまうと異なるインスタンス間でNextの結果が同じになることがあります。}}乱数の生成には、大抵の実装で「シード値」という値が必要です。Randomクラスも同様です。引数なしのコンストラクタを呼び出した場合、内部で以下のようにシード値を指定しています。}この「Environment.TickCount」はPCが起動してからのミリ秒単位の時間を記録しているint型の変数ですが、これが冒頭に記載したコードでミリ秒以下で参照されています。結果として同じミリ秒のシード値が使用され、Nextで得られる乱数が同値となります。(ミリ秒はCPU時間からするとかなり長い時間です)この現象を避ける方法ですが、以下2つが考えられます。すごく簡単で、以下のように同じRandomクラスを使いまわすMyRandomクラスを作成してシステム全体から使用する方法です。考える必要があります。int型なので128ビットの上位32bitしか使用していない、かつ、GUIDの生成という割と重めのコスト支払いが生かせていません。と類似の方法でオブジェクトを生成する処理を作成します。Random(random.Next());}これを以下のように使用すると短時間に複数のRandomオブジェクトを作成してもNextで得られる乱数の値が異なるオブジェクトを取得できます。....}上記あくまで一例で、これ以外に簡単な実装方法もあると思います。重要なのは、Randomクラスの生成をユーザーコード内で直接扱わない。何らかのラッパーをかませてシード値をRandomクラスに指定する事かと思います。»Profile受託ソフト会社員でWin系業務屋。趣味でCocos2d-x/C++を触っています。etc...主に受託・開発ネタ、Windowsの事、Srellaris、ゲーム制作の進捗の事を喋ります。ArticleC#で属性を利用して処理に制約の説明を追加するUnityで自動実装プロパティに表示名を指定するCocos2d-xをやめてUnityに移行した話@2019冬C#で文字列にSQLのIN句のようなメソッドを追加するC#のDateTimeとC++のtime_tを相互変換するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。