Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2010, 20:31   #1
antoha73
Пользователь
 
Регистрация: 20.12.2009
Сообщений: 14
По умолчанию Генерация случайных дат из диапазона, как реализовать?

Вопрос таков: есть необходимость выдергивать случайную дату из диапазона между 02.01.2006 и 01.01.2009, как это можно реализовать?
antoha73 вне форума Ответить с цитированием
Старый 23.03.2010, 21:16   #2
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Ну вот я написал на основе RandomRange из модуля Math
Код:
uses
  Math;

function RandomDate(aYear, bYear: integer): string;
var
  Day, Month, Year: string;
begin
  Randomize;
  Day:=IntToStr(RandomRange(1,12));
  if StrToInt(Day) < 10 then
    Day:='0'+Day;
  Month:=IntToStr(RandomRange(1,12));
  if StrToInt(Month) < 10 then
    Month:='0'+Month;
  Year:=IntToStr(RandomRange(aYear,bYear));
  Result:=Day+'.'+Month+'.'+Year;
end;
P.S.: хотя не, не то... оно только выдает дату из деапозона лет...

Последний раз редактировалось W0LF; 23.03.2010 в 21:18.
W0LF вне форума Ответить с цитированием
Старый 23.03.2010, 21:22   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
var dt1, dt2, dtRandom : TDateTime;
  Diapazon : integer;
begin
  Randomize;
  dt1 := EncodeDate(2006, 01, 02);
  dt2 := EncodeDate(2009, 01, 01);
  Diapazon := trunc(dt2) - trunc(dt1) + 1;
  dtRandom := dt1 + random(Diapazon);

  button1.Caption := DateToStr(dtRandom);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.03.2010, 21:34   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Поясните, пожалуйста, почему "+1"?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 23.03.2010, 21:48   #5
antoha73
Пользователь
 
Регистрация: 20.12.2009
Сообщений: 14
По умолчанию

Всем большое спасибо, помогли, все работает.
antoha73 вне форума Ответить с цитированием
Старый 23.03.2010, 22:07   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Поясните, пожалуйста, почему "+1"?
дело в том, что random(X) возвращает целое число от нуля до X-1
так чтобы получить случайную дату, которая может быть равна как первой дате, так и последней, для этого диапазон и увеличиваем на единичку...

поясню на примере (в принципе - это классика. )
нужно получить случайное число от [a .. b] (b > a)
это делается так:
a + random(b - a + 1)
подставьте любые числа и убедитесь, что формула работает.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.03.2010, 07:09   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
дело в том
Понял, благодарю. Начиаю впадать в маразм
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 24.03.2010, 07:15   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
Понял, благодарю. Начиаю впадать в маразм
ОФФТОП: Тот же случай как и SetLength - где от нуля, где от единицы .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генерация случайных чисел?! Evgeny_1 Фриланс 12 17.03.2010 14:23
Генерация случайных чисел от -1 до 1 Shketer Общие вопросы Delphi 4 19.12.2009 23:43
Генерация случайных... Яр|/||< (^_^) Общие вопросы Delphi 2 22.06.2009 21:33
Генерация Случайных Чисел Кирилл13 Помощь студентам 6 06.01.2009 10:31
Выбор Диапазона Дат Chepa БД в Delphi 2 02.02.2007 10:25