2017-01-07 2 views
1

私が作成したクラスに属するオブジェクトのインスタンスを多数生成するプログラムで作業しています。これらのオブジェクトのすべてには乱数のリストが含まれていると考えられ、オブジェクトごとに異なるランダムなリストが必要です。現在私は、クラスの定義の中の乱数のための種を作成します(以下を参照)。したがって、私はすべてのオブジェクトで同じリストを取得します。C#の乱数の問題のバリエーション

乱数生成の仕組みを理解しています(同様の問題について他の多くの回答を読んだことがあります)。そのため、種子がすべて近すぎて生成されているという問題があります。しかし、私はこのクラスのオブジェクトを使用するたびに使用される単一の静的なシードを作成する方法を知らない。新しいオブジェクトをインスタンス化するときに、静的乱数のシードを引数として使用する方法はありますか?または、より良い解決策がありますか?

ありがとうございました。

public class Room 
    { 

     static System.Random x = new System.Random(); 

     public List<int> birthdays = new List<int>(); 

     public int year; 

     public Room(int y) 
     { 

      year = y; 
     } 



     public void Fill(int j) 
     { 
      System.Console.WriteLine(x.Next(1, year)); 
      birthdays.Add(x.Next(1, year)); 
     } 

     public bool Check(int p, int d, int j) 
     { 
      for (int q = 0; q < j; q++) 
      { 
       int total = 0; 
       for (int y = 0; y < j; y++) 
       { 
        if (birthdays[y] - birthdays[q] <= d) { total += 1; }; 

        if (total >= p) 
        { return true; } 
       } 

      } 
      return false; 


     } 

    } 
+1

「確認」は何ですか?そのようなパラメータには名前を付けないでください。 'p'、' d'、 'j'はちょうど混乱し、自己記述的ではありません。 –

答えて

1

オブジェクトのコンストラクタに渡します。

System.Random x; 
    public Room(int y, System.Random rnd) 
    { 
     x= rnd; 
     year = y; 
    } 
+1

ボーナスポイントの場合、 'Random'インスタンスを所有クラスの' static readonly'値にして、異なる(またはリセットされた)シード値を持つ新しいインスタンスに再割り当てすることはできません。 – Dai

+0

ありがとう、それは今働いている。私はそれが可能であることを認識していませんでした! – ea297