|
Вопрос # 2 931/ вопрос решён / |
|
Здравствуйте!
Как можно сделать так, что бы при появлении формы в Edit1 появлялось произвольное число, в каком-то диапазоне, например от 0.00 до 1.00? Спасибо!
 |
Вопрос задал: Хитманчан (статус: Посетитель)
Вопрос отправлен: 21 июня 2009, 09:28
Состояние вопроса: решён, ответов: 2.
|
Ответ #1. Отвечает эксперт: Ученый
Здравствуйте, Хитманчан! в креэйте пишем:
begin
Randomize;
Edit1.text:=floattostr(Random(1));
end;
 |
Ответ отправил: Ученый (статус: 8-ой класс)
Время отправки: 21 июня 2009, 09:38
Оценка за ответ: 5
|
Ответ #2. Отвечает эксперт: min@y™
В конструторе или OnCreate или OnShow формы напиши
Edit1.Text:= FormatFloat('0.00', Random);
Для того, чтобы при разных запусках программы последовательности случайных значений не повторялись, открой файл проекта (.dpr) и перед Application.Initilize вставь Randomize().
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 21 июня 2009, 09:43
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 15; последнее сообщение — 21 июня 2009, 10:38; участников в обсуждении: 3.
|
min@y™ (статус: Доктор наук), 21 июня 2009, 09:46 [#1]:
Цитата (Ученый):
Random(1)
Я ФШОКЕ!
Сам-то понял, что написал?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Хитманчан (статус: Посетитель), 21 июня 2009, 09:48 [#2]:
Ученый, min@y™, спасибо! Но оно целые значения выдает... А мне надо с десятыми и стотыми получать... И не от нуля, в принципе, а где-то от 2-х до 5-ти... Можно как-то так сделать? Что бы вадавало не 2.00, 3.00, 4.00 и 5.00 - а там сякие 2.34 и т. д.? Спасибо)
|
|
Ученый (статус: 8-ой класс), 21 июня 2009, 09:49 [#3]:
min@y™ я знаю что единицу можно и не указывать, написал для наглядности , вдруг человеку нужно будет изменить диапозон)
Хитманчан если вам надо вывести число именно в формате скажем 0.00, 1.00 то воспользуейтесь ответом min@y™, но только не забудьте добавить Randomize иначе это будет "севдо случайность"
|
|
Ученый (статус: 8-ой класс), 21 июня 2009, 09:57 [#4]:
Хитманчан чтобы вывести в диапозоне от 2 до 5, надо писать так: Random(3)+2
|
|
min@y™ (статус: Доктор наук), 21 июня 2009, 10:00 [#5]:
Цитата (Ученый):
я знаю что единицу можно и не указывать, написал для наглядности , вдруг человеку нужно будет изменить диапозон)
Это 2 разные функции. Исходники их ты в модуле System.pas не найдёшь, но условно их можно представить так:
function Random(): Extended; overload; // 0 <= X < 1 вещественные
function Random(const Range: Integer): Integer; overload; // 0...(Range - 1) целые
Random(1) всегда будет возвращать 0.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ученый (статус: 8-ой класс), 21 июня 2009, 10:12 [#6]:
min@y™ вы правы....единица не нужна...
|
|
Хитманчан (статус: Посетитель), 21 июня 2009, 10:18 [#7]:
min@y™, Ученый, еще раз большое спасибо - но я так и не понял, как рандомом десятые и сотые части числа гинерировать... Он только целую меняет - а вещественную .00 оставляет... а как сделать, что бы и ее менял? Спаисбо.
|
|
min@y™ (статус: Доктор наук), 21 июня 2009, 10:22 [#8]:
Цитата (Хитманчан):
но я так и не понял, как рандомом десятые и сотые части числа гинерировать... Он только целую меняет - а вещественную .00 оставляет... а как сделать, что бы и ее менял?
Не знаю, у меня генерит вещественные числа. Вывали сюда свой код, посмотрим.
Бонус: написал тебе функцию, генерящую вещественные числа в диапазоне AFrom...ATo (AFrom < ATo).
function MyRandom(const AFrom, ATo: Extended): Extended;
begin
Result:= (ATo - AFrom) * Random + AFrom;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:= FormatFloat('0.00', MyRandom(2.0, 5.0));
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Хитманчан (статус: Посетитель), 21 июня 2009, 10:26 [#9]:
min@y™, большое спасибо, толкьо почему-то она у меня только 2.00 выдает(...
|
|
min@y™ (статус: Доктор наук), 21 июня 2009, 10:28 [#10]:
Выложи код. Чудес не бывает. Хочу посмотреть.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 21 июня 2009, 10:29 [#11]:
А ты в DPR-файл Randomize() прописал?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Хитманчан (статус: Посетитель), 21 июня 2009, 10:30 [#12]:
Да просто на форму всунул Edit1 и пробую коды, как Вы пишите)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function MyRandom(const AFrom, ATo: Extended): Extended;
begin
Result:= (ATo - AFrom) * Random + AFrom;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:= FormatFloat('0.00', MyRandom(2.0, 5.0));
end;
end.
|
|
Хитманчан (статус: Посетитель), 21 июня 2009, 10:31 [#13]:
>А ты в DPR-файл Randomize() прописал?
нет... точно! Сейчасс пропишу) Спасибо!
|
|
Хитманчан (статус: Посетитель), 21 июня 2009, 10:32 [#14]:
Все работает! Большое спасибо)
|
|
min@y™ (статус: Доктор наук), 21 июня 2009, 10:38 [#15]:
Цитата (Хитманчан):
Все работает! Большое спасибо
"Спасибо" - это слишком много! Достаточно ПИВА.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
31 января 2011, 19:36: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|