Я просто использую Scite. Введите что-то и нажмите f5 для наблюдения результатов.
Проблема в том, что вы создаете экземпляры класса Random
слишком близко по времени.
Когда вы создаете объект Random
, он заполнен значением системных часов. Если вы создадите Random
экземпляров слишком близко по времени, все они будут заполнены одной и той же случайной последовательностью.
Создайте один объект Random
и передайте его ссылку конструктору, когда вы создавать экземпляры класса «a» вместо создания одного Random
объекта для каждого экземпляра «a».
Вы создаете новый экземпляр Random
очень близко друг к другу (ваш цикл очень плотный), поэтому каждый экземпляр эффективно использует одно и то же начальное значение.
A Лучшим подходом было бы создать один экземпляр и передать его вашему методу Count
.
Вы, вероятно, знаете этот следующий бит, но я включу его здесь для полноты:
MSDN содержит подробную информацию об этом, но в основном ваша проблема заключается в использовании метода Random.Next , который генерирует:
32-битное целое число со знаком, которое больше или равно minValue и меньше maxValue. ; то есть диапазон возвращаемых значений включает minValue, но не maxValue. Если minValue равно maxValue, возвращается minValue.
из-за этого ваши вызовы вернут -1 или 0.
Используйте один статический генератор случайных чисел для всех экземпляров класса.
class a
{
private static Random rnd;
static a() {
rnd = new Random();
}
private void Count()
{
int r1 = rnd.Next(-1, 2);
int r2 = rnd.Next(-1, 2);
}
}
Обратите внимание на изменение, которое дает вам числа в диапазоне -1,1, а не -1,0
Вы включаете случайный экземпляр для каждого экземпляра A. Похоже, все они получают одно и то же начальное значение по умолчанию. Возможно, вы захотите сделать статический случайный случай для всех экземпляров A и использовать его повторно или, альтернативно, предоставить начальное значение экземпляру Random () в конструкторе A.