Пакет для работы со случайными объектами RandomTools
Примеры применения функций представлены ниже:
Функция GetFlavor(flvr) представляй случайный объект (или объекты) в форме процедуры:
> AddF1avor(a = rand(1..20)): Generate(a): 15 > GetFlavor(a); proc () 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) служит для проверки наличия объекта данного типа в списке типов объектов, а функция RemoveFlavor(flvr) – для удаления типа объекта.
Следующие примеры иллюстрируют применение этих функций:
> 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, описанному в этом уроке выше.