Всем привет. Есть вот такой код на C#: Code: int i = 0; while(i<trackBar1.Value) { Random r = new Random(); listBox1.Items.Add(r.Next()); i++; } Если его выполнить то строчки которые добавляются в ListBox будут одинаковые. Однако, если его выполнять пошагово (F11) то все нормально и значения которые добавляются в listbox разные. Далее если модифицировать код: Code: int i = 0; while(i<trackBar1.Value) { Thread.Sleep(100); Random r = new Random(); listBox1.Items.Add(r.Next()); i++; } Тоже становить нормально. Может я где то ошибаюсь ? Или так и надо тормозить процесс ?
Почитай что такое классы. Не по теме: Code: int i = 0; while (i < 10) { int c=i; i++; } Вот видишь код не логичный я int c делаю в цикле. А нужно было его вынести за цикл. Это с опытом придет.
выносить переменных за пределы цикла далеко не всегда логично. опу следует прочитать про ГПСЧ и способы его реализации, чтобы понять глубинные причины сего бага. Тут все утыкается в данные, которыми инициализируется рандом. Главная задача генератора - получить уникальное начальное значение, из которого потом генерятся остальные, юзая функцию с равномерным распределением получаемых величин. Ну или на худой конец стоит доки почитать об этом классе. Там все расписано, как юзать, когда создавать, какой основной способ получения данных(именно Next, а не порождение новых объектов).
с чего ему ругаться? Тут надо просто подумать о том, сколько раз у тебя выполнится инициализация Random'а, и нужно ли оно тебе.