50837


タイトル通りなのですが、実行するたびに数字は違うのですが、同じ数字が出てしまう原因が知りたいです。  
１、どうすれば一度の実行で異なる数字を画面に出力することができるのでしょうか？  
２、質問ですがこのラムダ式は正しいのでしょうか？

[code]

    using System;
    using IronPython.Hosting;
    using Microsoft.Scripting.Hosting;
    
    class Program
    {
        public static int random(int x) => (new Random().Next(x));
    
        public static void Main()
        {
            Console.WriteLine(random(1000));
            Console.WriteLine(random(1000));
            Console.WriteLine(random(1000));
            Console.WriteLine(random(1000));
            Console.ReadKey();
        }
    }
    
[/code]


CC BY-SA 4.0
2018-12-02T09:07:49.250
50830
2018-12-07T15:59:22.017
2018-12-07T15:59:22.017
3060
question
c#
System.Random関数で同じ数字が続けて出てしまう場合があるのはなぜ？


A1 <https://docs.microsoft.com/ja-jp/dotnet/api/system.random.-ctor>  
`System.Random()` は現在時刻を `seed` にした乱数列を作ります。例題では４つの乱数列がほぼ同時に作られる＝同じ `seed`
を持つ乱数列が４つ作られ、１つの乱数列から１つの乱数を取り出して、乱数列を使い捨ててる、ので当然の動き。

異なる乱数値が欲しいのであれば乱数列を使い捨てずに、１つの乱数列に対して複数回 `System.Random.Next()` すればよいだけです。  
<https://docs.microsoft.com/ja-jp/dotnet/api/system.random.next>

A2 ラムダ式自体は文法的に正しいでしょう。適切かどうかは何を期待しているか次第。


CC BY-SA 4.0
2018-12-02T23:31:47.153
50837
2018-12-02T23:31:47.153
8589
50830
answer