Russian Qt Forum

Qt => Вопросы новичков => Тема начата: alex_beginner от Января 11, 2012, 06:20



Название: Случайное значение даты (и времени)
Отправлено: alex_beginner от Января 11, 2012, 06:20
Имеется начальная и конечная дата (ну, допустим с 01.01.2012 по 10.01.2012).
И имеется интервал времени суток (скажем, с 09:00:00 по 18:00:00).

Требуется найти случайную дату/время, так чтобы дата попадала в интервал дат, а время - в интервал времени. Ну т.е например 05.01.2012 13:03:36

Как бы это попроще сделать? Что тут есть за генератор случайных чисел, как его проще сюда прикрутить, и как потом склеить дату с временем?


Название: Re: Случайное значение даты (и времени)
Отправлено: Blackwanderer от Января 11, 2012, 06:49
Генерируйте отдельно случайное значение для годов, месяцев, дней, часов, минут, секунд так чтобы каждое число попадало в соответствующий диапазон, а потом собирайте их в дату/время.


Название: Re: Случайное значение даты (и времени)
Отправлено: alex_beginner от Января 11, 2012, 07:11
Не, так не годится. Например, будут даты 28.01.2012 и 05.02.2012.  Если генерить отдельно день между 5 и 28, то он будет, например, 16. Но 16-е число не расположено между этими датами.
Тут как-то надо видно находить разницу в днях, что ли, потом искать случайный день, а потом прибавлять его к начальной дате. Но вот хотел посоветоваться, как это бы попроще. И как вообще вызывается генератор случайных чисел?


Название: Re: Случайное значение даты (и времени)
Отправлено: innovator_king от Января 11, 2012, 08:04
Уж куда проще-то, что предложили? Разницу в днях и миллисекундах и прибавлять к начальному значению. А случайные числа от n до x сделать просто.


Название: Re: Случайное значение даты (и времени)
Отправлено: Bepec от Января 11, 2012, 08:20
Ручками вычислить необходимый диапазон - дело минут, если есть желание.


Название: Re: Случайное значение даты (и времени)
Отправлено: Igors от Января 11, 2012, 12:51
Не проверял но полагаю так:

- перевести даты в "дни" (toJulianDay)
- сгенерировать случайное день между 2 днями
- перевести этот день в дату (fromJulianDay)


Название: Re: Случайное значение даты (и времени)
Отправлено: _OLEGator_ от Января 11, 2012, 13:35
Код
C++ (Qt)
int QDateTime::daysTo ( const QDateTime & other ) const
uint QDateTime::toTime_t () const

Можно использовать и генерировать дату и время отдельно, в полученном интервале.


Название: Re: Случайное значение даты (и времени)
Отправлено: alex_beginner от Января 11, 2012, 14:57
Спасибо всем, действительно всё оказалось очень просто. Я и вопрос-то задал только потому, что не думал, что здесь есть такие продвинутые QDate и QTime. Просто для лентяев (типа меня). Пожалуй, даже всё проще, чем в C#. Ну а qrand() - он как обычно...