Консультация № 105511
15.10.2007, 12:16
0.00 руб.
0 7 7
Здравствуйте Эксперты. Помогите разобраться с таким вопросом:
в дельфи есть функция Random();. Как заставить её генерировать значения в интервале [-5..+5]. Спасибо.

Обсуждение

Неизвестный
15.10.2007, 12:30
общий
это ответ
Здравствуйте, MIXAIL!

Вам достаточно пойти таким путем:
<code>
var i,k:integer;
begin
...
randomize;
k:=random(11)-5;
writeln(k);
...
end;</code>

Таким подходом (<b>random(11)-5</b>) вы получите нужный результат.
Еслинемного доработать код, то можно выводить числа из отрезка [-n; +n].

Вот код:
<code>const n=7;
var k:integer;
begin
...
randomize;
k:=random(2*n+1)-n;
writeln(k);
...
end.</code>

Good Luck!!!
Неизвестный
15.10.2007, 12:30
общий
это ответ
Здравствуйте, MIXAIL!

(10 * Random - 5) - даст вещесвенный результат в диапазоне [-5..+5]. С помощью функций Trunc (отсечение дробной части) и Round (округление до ближайшего целого) результат можно привести у целому типу.

После запуска программы нужно хотя бы раз запустить процедуру Randomize, иначе значения Random будут повторяться.
Неизвестный
15.10.2007, 14:12
общий
это ответ
<font color=red><b>!!!</b></font>
Здравствуйте, MIXAIL!

Достаточно просто:
x:=Random(11)-5;
Только предварительно нужно вызвать инициализацию генератора случайных чисел - Randomize;<p><fieldset style=‘background-color:#EFEFEF; width:80%; border:red 1px solid; padding:10px;‘ class=fieldset><font color=red><i>Ответ повторный (см. ответ эксперта <b>Gh0stik</b>)</i>
-----
</font><font color=#777777 size=1><b>• Отредактировал: <a href=/info/user/4837 target=_blank>Denisss</a></b> (Профессионал)
<b>• Дата редактирования:</b> 15.10.2007, 20:19</font></fieldset>
Неизвестный
15.10.2007, 16:11
общий
это ответ
Здравствуйте, MIXAIL!

Вот процедурка, которая это делает.
переменным <b>a</b> и <b>b</b> присваеваем граничные значения [a,b]
а переменной <b>f</b> случайное число из этого диапазона

<code>
procedure TForm1.Button1Click(Sender: TObject);
var a,b,f:integer;
begin
a := StrToInt(Edit1.Text);
b := StrToInt(Edit2.Text);
Randomize;
f := RandomRange(a,b);
Label1.Caption := IntToStr(f);
end;
</code>
Неизвестный
15.10.2007, 19:45
общий
это ответ
<font color=red><b>!!!</b></font>
Здравствуйте, MIXAIL!
RandomRange(MinVal, MaxVal);<p><fieldset style=‘background-color:#EFEFEF; width:80%; border:red 1px solid; padding:10px;‘ class=fieldset><font color=red><i>Ответ повторный (см. ответ эксперта <b>Виктор Пырлик</b>).</i>
-----
</font><font color=#777777 size=1><b>• Отредактировал: <a href=/info/user/4837 target=_blank>Denisss</a></b> (Профессионал)
<b>• Дата редактирования:</b> 15.10.2007, 20:20</font></fieldset>
Неизвестный
16.10.2007, 07:56
общий
это ответ
<font color=red><b>!!!</b></font>
Здравствуйте, MIXAIL!
Random(-1;1)*Random()*5
Random(-1;1) - случайное число из двух чисел<p><fieldset style=‘background-color:#EFEFEF; width:80%; border:red 1px solid; padding:10px;‘ class=fieldset><font color=red><i>Ответ не верный - не правильно используются стандартные функции. (Random(-1;1) и Random(-1;1) - ошибки).
Смотрите предыдущие ответы!!!</i>
-----
</font><font color=#777777 size=1><b>• Отредактировал: <a href=/info/user/14422 target=_blank>Gh0stik</a></b> (Профессор)
<b>• Дата редактирования:</b> 16.10.2007, 08:36</font></fieldset>
давно
Профессионал
153662
1070
16.10.2007, 10:08
общий
это ответ
Здравствуйте, MIXAIL! Насколько я знаю, функция Random генерирует только положительные числа, при этом если после функции нет числа, то генерируются числа от 0 до 1, а при наличие Random(x), числа от 0 до Х-1. По вашему вопросу непонятно какие числа Вам нужны (только целые или вместе с вещественными), поэтому предлагаю свой код, который генерирует целые и вещественные числа в интервале [-5,5]. Код нормально работает, если нужно только целые числа, его не трудно упростить.

Приложение:
var a :real;case random(4) of 0: a:=-1*random(6);\\ Получаем отрицательное целое число 1: a:=random(6);\\ Получаем положительное целое число 2: a:=-1*(random(6)+random);\\ Получаем отрицательное вещественное число 3: a:=(random(6)+random);\\ Получаем положительное вещественное числоend;
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Форма ответа