В AMPL доступны ряд встроенных функций генерации случайных чисел
Beta(a, b) | плотность(x) = xa−1(1−x)b−1/(Γ(a) Γ(b)/Γ(a + b)), x in [0,1] |
Cauchy() | плотность(x) = 1/(π( 1 + x2 ) ) |
Exponential() | плотность(x) = e− x, x > 0 |
Gamma(a) | плотность(x) = xa − 1 e− x / Γ(a) , x≥0, a > 0 |
Irand224() | возвращает целое число в диапазоне[0, 2^24) |
Normal(µ, σ) | нормальное распределение со средним µ, отклонения σ |
Normal01() | нормальное распределение со средним 0, отклонения 1 |
Poisson(µ) | вероятность(k) = e− µ µk / k! , k = 0 , 1 , ... |
Uniform(m, n) | равномерное распределение [m, n) |
Uniform01() | равномерное распределение [0, 1) |
Все случайные функции основаны на генераторе случайных чисел с очень длительным периодом. Начальное значение n может быть указано с помощью аргумента командной строки -sn, или параметра randseed, в то время как -s или option randseed ’’ указывает AMPL выбрать и распечатать источник. Аргумент no -s аналогичен указанию -s1.
Irand224() возвращает целое число в диапазоне [0,224). Учитывая то же самое соглашение, выражение вида floor(m∗Irand224()/n) даст одинаковое значение на большинстве компьютеров, когда m и n являются целочисленными выражениями, т. е. |n| < 2k-24 и |m|<2k, для машин, которые правильно вычисляют k-битные целочисленные произведения и коэффициенты с плавающей запятой; k ≥ 47 для большинства современных машин.