Переместите объявление генератора случайных чисел из цикла.
Генерация случайных чисел начинается со значения затравки. При многократном использовании одной и той же затравки генерируется одна и та же серия чисел. Один из способов получения различных последовательностей - сделать значение затравки зависящим от времени, тем самым создавая различные серии при каждом новом экземпляре Random. По умолчанию конструктор класса Random без параметров использует системные часы для генерации значения затравки, ...
Имея объявление в цикле, вы фактически вызываете конструктор с одним и тем же значением снова и снова - следовательно, вы получаете одни и те же числа.
Поэтому ваш код должен выглядеть так:
Random r = new Random();
for ...
string += r.Next(4);
Вы должны использовать один и тот же случайный экземпляр повсюду вместо того, чтобы каждый раз создавать новый.
Как у вас есть:
for ...
Random r = new Random();
string += r.Next(4);
начальное значение одинаково для каждого (по умолчанию используется текущая временная метка), поэтому возвращаемое значение одинаково.
Повторное использование одного экземпляра Random, например:
Random r = new Random()
for ...
string += r.Next(4);
Каждый раз, когда вы вызываете r.Next (4)
, значения обновляются (в основном разные начальные числа для каждого вызова).
Random r = new Random();
for ...
string += r.Next(4);
new Random()
инициализирует (псевдо-)генератор случайных чисел с затравкой, основанной на текущей дате и времени. Таким образом, два экземпляра Random
, созданные в одну и ту же дату и время, дадут одну и ту же последовательность чисел.
На каждой итерации вы создавали новый генератор случайных чисел, а затем брали первое значение из этой последовательности. Поскольку генераторы случайных чисел были одинаковыми, первое значение их последовательностей было одинаковым. Мое решение создаст один генератор случайных чисел, а затем вернет первое, второе и т.д... значение последовательности (которые будут разными).
Переместите Random r = new Random();
за пределы цикла и просто вызывайте next внутри цикла.