logo search
Самоучитель по Maple

46. Пакет для работы со случайными объектами RandomTools

Пакет для работы со случайными объектами RandomTools

Пакет для работы со случайными объектами RandomTools служит для расширения базовых возможностей системы Maple 7 (для большинства пользователей и так вполне достаточных) в части генерации различных случайных объектов, таких как числа различных форматов, векторов, матриц, строковых символов, таблиц и т. д. Они образно названы Flavor (в буквальном переводе «букет (вина)»), что подчеркивает возможную сложность структуры создаваемых объектов.

Пакет представлен небольшим числом основных функций:

> with(RandomTools);

[AddFlavor, Generate, GetFlavor, GetFlavors, HasFlavor, RemoveFlavor]

Однако функции AddFlavor и Generate могут использоваться с внушительным набором типов случайных объектов:

Choose

complex

exprseq

float

identical

Integer

list

listlist

negative

negint

Nonnegative

nonnegint

nonposint

nonpositive

nonzero

Nonzeroint

polynom

posint

positive

rational

Set

structured

truefalse

Действие большинства из них вполне очевидно из названий. Основной функцией является функция генерации случайных объектов Generate(expr). Если тип объекта не задан (например, функцией AddFlavor), то использование функции Generate будет порождать сообщение об ошибке. Примеры применения функций представлены ниже:

Функция GetFlavor(flvr) представляй случайный объект (или объекты) в форме процедуры:

> AddF1avor(a = rand(1..20)):

Generate(a):

15

> GetFlavor(a);

procO localt; global_seed;

_seed := irem(ax_seed,p);

t :=_seed;

toconcats do_seed:=irem(ax_seed,p);

t := sxt + _seed end do ;

irem(t, divisor) +offset endproc

> GetFlavor(integer);

module () localDefaults;

exportMain;

end module

Другая функция GetFlavors () возвращает все типы случайных объектов:

> GetFlavorsO;

a, alphachar, choose, complex, exprseq, float, integer, list, listlist, negative, negint, nonnegative, nonnegint, nonposint, nonpositive, nonzero, nonzeroint, polynom, posint, positive, rational, set, string, truefalse

Функция HasFlavor(flvr) служит для проверки наличия объекта данного типа в списке типов объектов, а функция RemoveFl avor(f1vr) — для удаления типа объекта. Следующие примеры иллюстрируют применение этих функций:

> HasFlavor(a):

true

> RemoveFlavor(a);

> HasFlavor(a):

false

> GetFlavors();

alphachar, choose, complex, exprseq, float, integer, list, listlist, negative, negint, nonnegative, nonnegint, nonposint, nonpositive, nonzero, nonzeroint, polynom, posint, positive, rational, set, string, truefalse

Обратите внимание на то, что после уничтожения объекта типа а он исчез из списка, выводимого функцией GetFlavors. Этот пакет, несмотря на довольно специфические возможности, наверняка будет полезен тем читателям, которые всерьез заняты реализацией «продвинутых» методов Монте-Карло, основанных на моделировании случайных объектов и ситуаций. Он служит серьезным дополнением к пакету статистических расчетов stats, описанному в этом уроке выше.

25.gif

26.gif