none
Самостоятельная работоспособность класса RRS feed

  • Вопрос

  • Есть некий класс А внутри которого создаем случайное число

      public class A
      {
        public int i=0;
        public A()
        {
          Random rnd = new Random();
          i = rnd.Next(1, 10);
        }
      }

    В  программе
    for (int i = 0; i < 15; i++)
          {
            A a = new A();
            A b = new A();
            Console.WriteLine("a=" + a.i.ToString() + " b=" + b.i.ToString());
            Thread.Sleep(10);       
          }

    Значения a.i и b.i всегда равны... как сделать так чтобы они небыли равны...
    • Перемещено Tagore Bandlamudi 1 октября 2010 г. 21:55 MSDN Forums consolidation (От:Visual C#)
    8 июня 2010 г. 23:24

Ответы

  • private static readonly Random rnd = new Random();


    This posting is provided "AS IS" with no warranties, and confers no rights.
    • Помечено в качестве ответа I.Vorontsov 9 июня 2010 г. 6:01
    Модератор
  • В первом случае каждый раз создается новый генератор ПСЧ который начинает выдать последовательность с самого начала. Поэтому числа и совпадают.

    Во втором случае создается один генератор который выдает следущее число для каждого экземпяра класса.


    This posting is provided "AS IS" with no warranties, and confers no rights.
    • Помечено в качестве ответа dampirik 24 октября 2017 г. 5:55
    Модератор

Все ответы

  • Используйте сидирование: http://msdn.microsoft.com/en-us/library/ctssatww(v=VS.100).aspx

    Например, текущим количеством миллисекунд.

    public class A
     {
      public int i=0;
      public A()
      {
       Random rnd = new Random(DateTime.Now.Milliseconds);
       i = rnd.Next(1, 10);
      }
     }
    



    http://www.alexatnet.com/ - consulting, my blog, articles and discussions
    • Предложено в качестве ответа Alex Netkachov 9 июня 2010 г. 0:47
  • Если не тормозить процесс, то все-равно не успевает...

  • private static readonly Random rnd = new Random();


    This posting is provided "AS IS" with no warranties, and confers no rights.
    • Помечено в качестве ответа I.Vorontsov 9 июня 2010 г. 6:01
    Модератор
  • Спасибо, то что нужно... но хотелось бы еще понять почему так происходил...

    зы.. я как-то static немного по другому использовал... и что тогда меняется...(или он все-таки успевает создать новый рандом?)

     

  • В первом случае каждый раз создается новый генератор ПСЧ который начинает выдать последовательность с самого начала. Поэтому числа и совпадают.

    Во втором случае создается один генератор который выдает следущее число для каждого экземпяра класса.


    This posting is provided "AS IS" with no warranties, and confers no rights.
    • Помечено в качестве ответа dampirik 24 октября 2017 г. 5:55
    Модератор