Немного о генерации псевдослучайных чисел

Для заполнения матрицы случайными (точнее, псевдослучайными) числами можно создать функцию, генерирующую числа из заданного диапазона. Все-таки, хорошо знакомая нам функция rand() генерирует числа из диапазона от 0 до 32767. Кроме того, при использовании этой функции без дополнительных манипуляций псевдослучайная последовательность будет всегда одной и той же. Для устранения этого недостатка мы напишем аналог функции randomize(), которая используется, например, в Паскале.

Итак, для простоты мы не будем увеличивать диапазон возможных значений, поскольку для наших целей этого вполне достаточно, но введём возможность смещения этого диапазона в сторону отрицательных чисел. Вспомним, что ограничить диапазон можно с помощью взятия остатка от деления:

int r = rand()%100;

Число r будет псевдослучайным числом из диапазона от 0 до 99. Сместить диапазон можно посредством прибавления минимально желаемого значения. Например,

int r = rand()%100 - 20;

Теперь число r будет псевдослучайным числом из диапазона от -20 до 79. Реализуем описанные действия в виде функции:

int rnd(int min, int max) {

return rand()%(max-min) + min;

}

Наконец, реализовать функцию randomize() можно так:

void randomize() {

srand(time(0));

}

Не забудьте подключить библиотеку time.h.

Заполнение матрицы случайными числами

С использованием созданных функций rnd() и randomize() заполнение матрицы псевдослучайными числами будет выглядеть так:

randomize();

for (int i=0; i<size; i++) {

for (int j=0; j<size; j++) {

matrix[i][j] = rnd(-99, 100);

}

}