2017-01-07 3 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

Смежные вопросы