IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> функция Rondom, помогите разобраться
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Женский
Реальное имя: Евгения

Репутация: -  0  +


Сразу говорю, я пользовалась поиском и все прочла, но есть такие вопросы:
вот фрагмент задачи:
begin
clrscr;
randomize;
sum:=0;
for i:=1 to n do begin
a[i]:=random*100;
if random(100)<50 then a[i]:=a[i]*-1;
write(a[i] :4 :2,' ');
В этом фрагменте заполняется массив вещественными, положительными и отрицательными числами.
Мне не понятно, почему пишется Random*100 без скобок(в принципе, то что без скобок это понятно, т.к вещественные числа) и и почему со знаком * (умножить)?
Как еще можно показывать диапозон генерации случайных чисел в функции Random?
немогли бы вы привести примеры ,как это делать с вещественными и целыми числами ,какие еще есть варианты, какие можно применять знаки, и как все это понять, что он будет конкретно делать, т.е с какого диапозона брать числа и какие?
И еще, (по фрагменту задачи) можно ли подругому, но тоже с rondom, заполнить массив из n вещественных элементов, чтоб были положительные и отрицательные элементы?
Спасибо за помощь.

Пожалуйста, используй теги.
Выдели программу блоком и выбери нужный тип кода в выпадающем меню над мессаджем


Сообщение отредактировано: lapp -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
не понятно, почему пишется Random*100 без скобок(в принципе, то что без скобок это понятно, т.к вещественные числа) и и почему со знаком * (умножить)?
Дело-то все в том, что Random имеет 2 формы записи, как ты правильно заметила. Первая, без параметра, возвращает случайное вещественное число X
(0 <= X < 1)
а вторая (с параметром) - целое число в интервале 0 <= X < {параметр}

Здесь - первый вариант... Но: допустим, задача - получить вещественные случайные числа в интервале 0<=X<100. Что делаем? Правильно, раз простой Random выдает до единицы, то Random*100 выдаст до 100 smile.gif

Цитата
можно ли подругому, но тоже с rondom, заполнить массив из n вещественных элементов, чтоб были положительные и отрицательные элементы?
Можно... Вот так, например:

const
range_start = -50;
range_finish = 50;
...
randomize;
for i := 1 to n do begin

a[i] := random * (range_finish - range_start) + range_start;

end;
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.04.2024 21:02
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name