プログラミングとかブログ

Unity/C#/SRPGStudio/RPGツクールMVの情報とかその他気になったことを調べて書きます。

【C#】1行で乱数生成するコード【random】

Console.WriteLine(new Random().Next());

f:id:shirakamisauto:20160215093421p:plain
でも連続で処理するときは乱数にならないことがあるので注意
乱数シードがミリ秒なのでミリ秒以上の処理速度だと乱数が変わりません。
neue cc - C#とランダム
以下のように連続でやっても同じ値しか出ません。*1

Console.WriteLine(new Random().Next());
Console.WriteLine(new Random().Next());
Console.WriteLine(new Random().Next());
Console.WriteLine(new Random().Next());

f:id:shirakamisauto:20160215093430p:plain
間にスリープ噛ませたり処理を挟めば変わります。

Console.WriteLine(new Random().Next());
Console.WriteLine(new Random().Next());
Thread.Sleep(100);
Console.WriteLine(new Random().Next());
Console.WriteLine(new Random().Next());
Thread.Sleep(100);
Console.WriteLine(new Random().Next());
Console.WriteLine(new Random().Next());

f:id:shirakamisauto:20160215093435p:plain
いちいちインスタンス生成するのもアホらしいので何度も使うなら普通にインスタンスを使えばいいでしょう。

Random random = new Random();
int i = random.Next(500);

インスタンス生成せずに呼び出せたらいいのになぁ。

*1:でもCPU?の状態によってときどき変わる