Страница 1 из 1

Случайная строка.

Добавлено: Сб янв 24, 2009 3:47 am
Lesha
Как сгенерировать случайную строку 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];
Но все равно выдается та же ошибка.
Как можно решить задачу?

Заранее спасибо, Алексей.

Добавлено: Сб янв 24, 2009 10:01 am
aar
Не знаю, почему у Вас такая ошибка. Варианты -- не заданы значения 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]
>

Добавлено: Ср апр 08, 2009 1:32 pm
CALGARI
я тоже голову ломал,а решение было так близко.спасибо.
____________
недвижимость франции