Создание массивов со случайными элементами
- р = randperm(n) – возвращает случайные перестановки целых чисел 1:n в векторе-строке. Пример:
>
>
randperm(
6
)
ans
=
243651
Функция rand генерирует массивы случайных чисел, значения элементов которых равномерно распределены в промежутке (0, 1):
- rand(n) – возвращает матрицу размера nхn. Если n – не скаляр, то появится сообщение об ошибке;
- rand(m.n) или rand([m п]) – возвращают матрицу размера mxn;
- rand(m.n,p….) или rand([m n р…]) – возвращает многомерный массив;
- rand(size(A)) – возвращает массив того же размера и размерности, что и А, с элементами, распределенными по равномерному закону;
- rand (без аргументов) – возвращает одно случайное число, которое изменяется при каждом последующем вызове и имеет равномерный закон распределения;
- rand(' state') – возвращает вектор с 35 элементами, содержащий текущее состояние генератора случайных чисел с равномерным распределением. Для изменения состояния генератора можно применять следующие формы этой функции:
- rand('state'.s) – устанавливает состояние в s;
- rand('state',0) – сбрасывает генератор в начальное состояние;
- rand('state' .j) – для целых j, устанавливает генератор в j-е состояние;
- rand('state',sum(100*clock)) – каждый раз сбрасывает генератор в состояние, зависящее от времени.
Пример:
>
>
Y
=
rand(
4.3
)
Y
=
0.9501
0.8913
0.8214
0.2311
0.7621
0.4447
0.6068
0.4565
0.6154
0.4860
0.0185
0.7919
Проверить равномерность распределения случайных чисел можно, построив большое
число точек на плоскости со случайными координатами. Это делается с помощью
следующих команд:
>
>
X
=
rand(
1000.1
);
>
>
Y
=
rand(
1000.1
);
>
>
plot(X,Y,
'.'
)
Полученный при этом график показан на рис. 10.1. Нетрудно заметить, что точки довольно равномерно распределены на плоскости, так что нет оснований не доверять заданному закону распределения координат точек.
Рис. 10.1. Случайные точки с равномерным распределением координат на плоскости