DataGridView1 и два NumbericUpDown с соответствующими названиями добавь и вот код на форме:
using System;
using System.Windows.Forms;
namespace SWF
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
numericUpDown2_ValueChanged(null, null);
}
private void numericUpDown2_ValueChanged(object sender, EventArgs e)
{
dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();
Int32 M, N;
M = (int)numericUpDown1.Value;
N = (int)numericUpDown2.Value;
Single[,] arr = new Single[M, N];
Random rnd = new Random();
for (int i = 0; i < M; i++)
for (int j = 0; j < N; j++)
arr[i, j] = rnd.Next(-20, 20);
for (int i = 0; i < M; i++)
{
dataGridView1.Columns.Add("", "");
for (int j = 0; j < N; j++)
{
if ((i == 0) && (j == 0)) dataGridView1.Rows.Add(N);
dataGridView1[i, j].Value = arr[i, j];
}
}
}
}
}
Разумеется, там много мелочей: на NUD1 и NUD2 добавить событие, установить минимальные значения... Лучше посмотрите решение в документе ниже: там архив с папкой проекта)