| 
| 
 | Вопрос # 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) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |