Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415

Можно ли как-то оператор "Random" научить работать с вещественными числами?

11.08.2016, 01:25. Показов 4248. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли как-то этот оператор научить работать с вещественными числами? Не хочу конкретно расписывать задачу, чтобы сразу не скинули решение. Но пока что повис на этом. Это вообще реально или же стоит думать в другом направлении?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.08.2016, 01:25
Ответы с готовыми решениями:

Как в Python работать с длинными вещественными числами?
Здравствуйте! Я хотел бы узнать как в Python работать с большими вещественными числами, длина которых например составляет 350 символов?...

Объявите массив от 1 до N и заполните его вещественными числами, используя функцию random
1 Задача.Введите массив с использованием текстового поля Memo. Выведите на форму в диалоговое окно InputBox.Как в дельфи реализовать. ...

Создать процедурой два массива с вещественными случайными числами ( через random) Определить функцией
Создать процедурой два массива с вещественными случайными числами ( через random) Определить функцией сколько элементов массива при...

20
3030 / 1916 / 1649
Регистрация: 30.04.2011
Сообщений: 3,060
11.08.2016, 03:46
Неплохо бы для начала открыть встроенную справку:
function Random: real;
Возвращает случайное вещественное в диапазоне [0..1)
Следовательно, чтобы получить случайное вещественное число, к примеру, в диапазоне [10..20), нужно сделать так:
Pascal
1
2
3
...
  x := 10 * Random + 10;
...
1
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
11.08.2016, 11:16  [ТС]
Я просто еще не дошел до функций, данная задача ввобще в теме "Вычисления". Значит, думаю не в том направлении. Спасибо.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
11.08.2016, 11:27
Цитата Сообщение от Notoriously Посмотреть сообщение
Я просто еще не дошел до функций
Это стандартная функция как abs, sin и т.д.
1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
11.08.2016, 11:30
Notoriously,
вероятно, вас могло смутить то, что существуют две разные функции Random, одна с параметром, другая без.
Та, что с параметром, возвращает целое число в диапазоне от 0 до значения параметра, не включая его.
Та, что без параметров, возвращает действительное число из диапазона [0;1).
2
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
11.08.2016, 12:33
bormant, в PABC.NET их 3:

function Random(maxValue: integer): integer;
Возвращает случайное целое в диапазоне от 0 до maxValue-1
function Random(a, b: integer): integer;
Возвращает случайное целое в диапазоне от a до b
function Random: real;
Возвращает случайное вещественное в диапазоне [0..1)

… Просто нужно нажать F1
;–)
1
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
11.08.2016, 13:47  [ТС]
Цитата Сообщение от bormant Посмотреть сообщение
Та, что без параметров, возвращает действительное число из диапазона [0;1).
Именно это и смутило. Вроде бы понял,как оно работает. В данном случае, я засчет умножению задаю диапазон,в котором буду работать, а засчет прибавления нижней границы, показываю , откуда нужно идти? Так? И я еще думал границы округлять,но как я понимаю, делать этого не надо?
Сама задача : "Напишите программу, которая вводит два вещественных числа, a и b ( a < b ), и выводит через пробел 5 случайных вещественных чисел в полуинтервале [ a , b ) ."
Ссылка на нее : http://informatics.mccme.ru/mo... d=112152#1
Мое решение (Засчитало,как правильное):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Program randomNumbers2;
var x1,x2,x3,x4,x5,a,b:real;
Begin
Randomize;
Readln(a,b);
{a:=trunc(a);
b:=trunc(b);}
x1:=(b-a)*Random+a;
x2:=(b-a)*Random+a;
x3:=(b-a)*Random + a;
x4:=(b-a)*Random + a;
x5:=(b-a)*Random + a;
Write(x1:10:3, ' ',x2:10:3, ' ',x3:10:3, ' ',x4:10:3, ' ',x5:10:3);
end.
Добавлено через 2 минуты
Цитата Сообщение от JuriiMW Посмотреть сообщение
Просто нужно нажать F1
Спасибо,но я стараюсь пользоваться только тем,что я на данный момент смог запомнить и понять из профильной литературы,по которой изучаю Паскаль. Там просто ни слова не было об этом.
Это спецификация как такового ABC или можно применять во всех средах?

Добавлено через 56 секунд
Цитата Сообщение от Puporev Посмотреть сообщение
Это стандартная функция как abs, sin и т.д.
Испугало слово "function", обычно дальше в программе начинается то,до чего мне,видимо,как до Китая.
0
11.08.2016, 13:51

Не по теме:

Да даже если бы не существовало перегруженной возвращающей Real - можно просто поделить одно Random на другое Random.

0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
11.08.2016, 13:54
Notoriously,
я б сделал чуть иначе:
Pascal
1
2
3
4
5
6
var a, b: Real;
begin
  Randomize;
  Read(a,b); b:=b-a;
  Write(a+b*Random:0:3,' ',a+b*Random:0:3,' ',a+b*Random:0:3,' ',a+b*Random:0:3,' ',a+b*Random:0:3);
end.
или
Pascal
1
2
3
4
5
6
var a, b: Real; i: Integer;
begin
  Randomize;
  Read(a,b); b:=b-a;
  for i:=1 to 5 do Write(' ',a+b*Random:0:3);
end.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
11.08.2016, 13:56
Для данного теста randomize не обязательно.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
11.08.2016, 13:58
Цитата Сообщение от BOGG ART Посмотреть сообщение
можно просто поделить одно Random на другое Random
или не совсем просто. Пример конкретного кода укажет на подводные камни :-)

Добавлено через 54 секунды
Цитата Сообщение от Puporev Посмотреть сообщение
Для данного теста randomize не обязательно
а вдруг они для проверки ее дважды запускают и сравнивают последовательности на воспроизводимость?
Поди знай...
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
11.08.2016, 14:00
Да, они такие...

Добавлено через 1 минуту
Просто я туда скинул такой код
Pascal
1
2
3
4
5
6
7
var a,b:real;
    i:byte;
begin
read(a,b);
for i:=1 to 5 do
write(a+random*(b-a):0:3,' ');
end.
Приняли.
0
11.08.2016, 14:04

Не по теме:

Никаких камней, просто то число на которое делить строго больше 0.
А если надо с фиксированным количеством знаков после запятой можно вовсе целый Random на 1000 поделить или сколько нужно.

0
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
11.08.2016, 14:19  [ТС]
Цитата Сообщение от bormant Посмотреть сообщение
я б сделал чуть иначе:
Да,так куда красивее и компактнее. Но циклы мне в голову пока не приходят сами,что печально,ведь они объем работы сокращают в разы. Спасибо.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
11.08.2016, 14:32
BOGG ART,
вооот, начинаете делать оговорки в правильном направлении. Осталось вспомнить про гранулярность и сделать следующий вывод :-)
Вот так, слово за слово, с камушка на камушек, глядишь, и через брод перешли.
Talk is cheap. Show me the code.
0
 Аватар для kolay_ne
16 / 18 / 11
Регистрация: 07.03.2016
Сообщений: 362
11.08.2016, 20:22
Цитата Сообщение от Kodzaev Посмотреть сообщение
чтобы получить случайное вещественное число, к примеру, в диапазоне [10..20)
Зачем так сложно? В любой тип без замарочек:
Pascal
1
2
3
4
5
var a:real; b:integer;
begin
a := random(10,20);
b := random(10,20);
end.
Добавлено через 10 минут
JuriiMW, Не совсем... Random : real - тут се просто. А в двух других случаях их каждого прописано по два: каждый есть и как intereg, и как real. Вот, смотрите (не рабочее закомментировано):
Pascal
1
2
3
4
5
6
7
8
9
var a,b,c:integer; d,e,f:real;
begin
//a := Random;
b := Random(9);
c := Random(3,6);
d := Random;
e := Random(9);
f := Random(3,6);
end.
0
11.08.2016, 20:25

Не по теме:

Цитата Сообщение от kolay_ne Посмотреть сообщение
без замарочек:
Научишься писать по русски, цены тебе не будет.

0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
11.08.2016, 20:58
Цитата Сообщение от kolay_ne Посмотреть сообщение
каждый есть и как intereg, и как real
не-а.
Просто действительному числу можно присваивать целое безболезненно, эти типы совместимы по присваиванию, то же, что и
Pascal
1
2
3
4
5
6
var 
  r: Real;
  i: Integer;
begin
  r:=i;  // присваивание допустимо Real <- Integer
end.
0
11.08.2016, 21:44

Не по теме:

Puporev, Это - опечатка :)

0
12.08.2016, 08:20

Не по теме:

Опечатка это когда жмешь на клавишу рядом с нужной, а клавиши а и о не рядом.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.08.2016, 08:20
Помогаю со студенческими работами здесь

Почему cmd не может работать с вещественными числами?
Вот я начал недавно изучать интерпретатор командной строки, и дошел до оператора set /a, позволяющий выполнять арифметические операций. Но...

Все возможные операции над вещественными числами через оператор CASE
Составить программу, которая бы с помощью оператора CASE реализовала бы все возможные операции над вещественными числами.

Как научить XMLHTTP работать с портами?
Пипл... Кто нибудь знает как эту каку с портами научить работать... при указании порта в open возникает коварная еррора (вернее при...

Как научить JBuilder работать с EJB3?
я вижу, jbuilder 2006 не умеет работать с EJB3. есть ли какие-то плугины, чтобы их &quot;подружить&quot;?

Как заполнить матрицу вещественными числами
Дана двумерная матрица, нужно заполнить случайными вещественными числами.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru