Как сгенерировать случайную строку T, чтобы каждый её элемент принимал, с равной
вероятностью, одно из значений, лежащих в интервале целых значений от n1 до n2?
(Нужно для бутстрепт метода).
Попробовал «напрямую» воспользоваться генератор случайных чисел rand:
T:=[rand(n1..n2) $i=n1..n2];
Но выдается ошибка «Error, wrong number (or type) of parameters in
function $». Почему-то не хочет использовать процедуру rand(n1..n2) в
«теле» определения строки.
Попробовал сгенерировать случайные числа вне «тела» определения строки, а потом создать из
них строку:
for i from n1 to n2 do
r[i] := rand(n1..n2):
end do:
T:=[r[i]() $i=n1..n2];
Но все равно выдается та же ошибка.
Как можно решить задачу?
Заранее спасибо, Алексей.
Случайная строка.
Модератор: Admin
Не знаю, почему у Вас такая ошибка. Варианты -- не заданы значения n1, n2 или i было раньше что-то присвоено. Чтобы получить список случайных чисел, нужно использовать не $, а seq:
Код: Выделить всё
> n1 := 10:
> n2 := 30:
> r := rand(n1 .. n2):
> [seq(r(), i = n1 .. n2)];
[18, 22, 25, 10, 15, 22, 23, 16, 16, 12, 23, 24, 24, 28, 30, 21, 28, 17, 12, 26, 26]
>
> [r() $ (i = n1 .. n2)];
[12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12]
>