#include <cstddef>
#include <iterator>
#include <iostream>
#include <random>
#include <algorithm>

int main()
{
	std::size_t constexpr N { 3 };
	double a[N][N] {};
	double b[N][N] {};

	std::cout << "before:\na:\n";
	std::copy(&a[0][0], &a[0][0] + N * N, std::ostream_iterator<double>{ std::cout, " " });
	std::cout << "\nb:\n";
	std::copy(&b[0][0], &b[0][0] + N * N, std::ostream_iterator<double>{ std::cout, " " });

	std::random_device rd;
	std::generate(&a[0][0], &a[0][0] + N * N, [&]() { return std::uniform_real_distribution<double>{ 0., 100. }(rd); });
	std::generate(&b[0][0], &b[0][0] + N * N, [&]() { return std::uniform_real_distribution<double>{ 0., 100. }(rd); });

	std::cout << "\n\nafter:\na:\n";
	std::copy(&a[0][0], &a[0][0] + N * N, std::ostream_iterator<double>{ std::cout, " " });
	std::cout << "\nb:\n";
	std::copy(&b[0][0], &b[0][0] + N * N, std::ostream_iterator<double>{ std::cout, " " });

	std::cout << "\n\n";
}
