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

Этот прием используется для моделирования случайных процессов, например, броуновского движения частиц. Пусть требуется заполнить массив равномерно распределенными случайными числами в интервале [a,b]. Поскольку для целых и вещественных чисел способы вычисления случайного числа в заданном интервале отличаются, рассмотрим оба варианта.Здесь и далее предполагается, что в начале программы есть строчка

const int N = 10;

Описание функции-датчика случайных чисел находится в заголовочном файле stdlib.h.

Удобно также добавить в свою программу функцию random:

int random (int N) { return rand() % N; }

которая выдает случайные числа с равномерным распределением в интервале [0,N-1].

Как вы уже знаете из первой части курса, для получения случайных чисел с равномерным

распределением в интервале [a,b] надо использовать формулу

k = random (b – a + 1) + a;

Для вещественных чисел формула несколько другая:

x = rand()*(b - a)/RAND_MAX + a;

Здесь константа RAND_MAX – это максимальное случайное число, которое выдает стандартная функция rand.

В приведенном ниже примере массив A заполняется случайными целыми числами в интервале [-5,10], а массив X – случайными вещественными числами в том же интервале.

Возможно, в этом примере не вполне ясно, зачем перед вызовом функции rand поставлено слово (float). Это связано с тем, что у нас a и b – целые числа. Результат функции rand –тоже целое число. Здесь возможны две проблемы:

• При умножении результата функции rand на b-a может получиться очень большое число,которое не поместится в переменную типа int.

• В языке Си при делении целого числа на целое остаток отбрасывается, поэтому при делении результат будет неверным.

Когда массив заполняется случайными числами, обязательно вывести на экран исходный массив.

Пример. Заполнить массив случайными целыми числами в интервале [-10,15], умножить все элементы на 2 и вывести на экран исходный массив и результат.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: