Инициализация двух массивов

183
14 марта 2019, 06:30
#include <iostream>
#include <ctime> 
using namespace std;
class massive {
private:
    int b[4];
public:
massive() {
    srand(time(0));
    for (int i = 0; i < 4; i++) {
        b[i] = 1 + rand() % 10;
        cout << b[i] << " ";
    }
    cout << "\n";
}
};
int main() {
   massive a;
   massive b;
   return 0;
}

Почему при выполнении кода оба массива постоянно инициализируются (или, по крайней мере, выводятся на экран) одинаковыми числами? https://www.onlinegdb.com/edit/B1wiCeG2m

Answer 1

Так происходит потому что srand(time(0)); нужно вызывать в функции main, тогда у тебя будут разные значения.

Вот рабочий код.

#include <ctime>
#include <iostream>
using namespace std;
class massive
{
  private:
    int b[4];
  public:
    massive()
    {
        for (int i = 0; i < 4; i++)
        {
            b[i] = 1 + rand() % 10;
            cout << b[i] << " ";
        }
        cout << "\n";
    }
};
int main()
{
    srand(time(0));
    massive a;
    massive b;
    system("pause");
    return 0;
}

READ ALSO
Как записать несколько чисел в одном рядке в массив [закрыт]

Как записать несколько чисел в одном рядке в массив [закрыт]

Дана задача, в которой надо ввести числа в массив, при этом, вводить их надо через пробел

161
Ошибка при подключении к БД jdbc

Ошибка при подключении к БД jdbc

Вот возникает ошибка при попытке подключения: commysql

170
Создание объектов JPanel с помощью Map

Создание объектов JPanel с помощью Map

подскажите, имеется следующий класс

156
Смена jdk на 11 версию

Смена jdk на 11 версию

Подскажите, после установки jdk-110

171