Проблема с классом Random в C# [дубликат]

327
22 февраля 2018, 11:12

На данный вопрос уже ответили:

  • Начальное значение Random() в C# 1 ответ
  • random заполняет две матрицы одинаковыми значениями 2 ответа

Функция next генерирует одинаковые числа для всех объектов класса. Думаю, проблема в конструкторе с 1 параметром.

public class Tank
 {
    private string name;
    private int ammunition;
    private int armor;
    private int mobility;
    Random rnd;
    public Tank()
    {
        name = "no-name";
        ammunition = 0;
        armor = 0;
        mobility = 0;
    }
    public Tank(string name)
    {
        this.name = name;
        rnd = new Random();
        ammunition = rnd.Next(1, 100);
        armor = rnd.Next(1, 100);
        mobility = rnd.Next(1, 100);
    }
    public Tank(string name, int ammunition, int armor, int mobility)
    {
        this.name = name;
        this.ammunition = ammunition;
        this.armor = armor;
        this.mobility = mobility;
    }
    public int getAmmo() { return ammunition; }
    public int getArmor() { return armor; }
    public int getMobility() { return mobility; }
    public override string ToString()
    {
        return string.Format($"{name}: боекомплект - {ammunition}, броня - {armor}, маневренность - {mobility}");
    }
    public static Tank operator * (Tank t1, Tank t2)
    {
        Tank winner;
        if (t1.getAmmo() > t2.getAmmo() && t1.getArmor() > t2.getArmor())
        {
            winner = t1;
            return winner;
        }
        if (t1.getAmmo() > t2.getAmmo() && t1.getMobility() > t2.getMobility())
        {
            winner = t1;
            return winner;
        }
        if (t1.getArmor() > t2.getArmor() && t1.getMobility() > t2.getMobility())
        {
            winner = t1;
            return winner;
        }
        else
            winner = t2;
        return winner;
    }
}
class Program
{
    static void Main(string[] args)
    {
        Random rnd = new Random();
        Tank win;

        Tank[] nashi = new Tank[5];
        Tank[] vashi = new Tank[5];
        for (int i = 0; i < nashi.Length; i++)
        {
            //nashi[i] = new Tank("T-34", rnd.Next(1, 100), rnd.Next(1, 100), rnd.Next(1, 100));
            //vashi[i] = new Tank("Pantera", rnd.Next(1, 100), rnd.Next(1, 100), rnd.Next(1, 100));
            nashi[i] = new Tank("T-34");
            vashi[i] = new Tank("Pantera");
            Console.WriteLine($"{nashi[i]} vs {vashi[i]}");
            win = nashi[i] * vashi[i];
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine($"Победитель: {win}\n");
            Console.ResetColor();
        }
        Console.ReadKey();
    }
}

READ ALSO
Ошибка в коде js при котором некорректно работает alert

Ошибка в коде js при котором некорректно работает alert

Почему в видеоуроке от mailru написано $('a')

245
Вывести элементы массива каждый в новой строке

Вывести элементы массива каждый в новой строке

Вечер добрый! Есть массив arr=[{id:1, title:

289
Как удалить объекты в объекте?

Как удалить объекты в объекте?

Есть некий объект, внутри которого другие объекты доступны по ключам:

273
Как content script общается с background? (В google расширении)

Как content script общается с background? (В google расширении)

Не получается подключить content script с backgroundНе реагирует

296