Рандомная дата -
Mass_Deboose - 13.12.2011
Дело в том, что я пытаюсь сделать что бывыпадало рандомное число, с определенного месяца по другой. ZiGGi подсказал код, но это совсем не то:
pawn Code:
// вот функция
stock rand(min,max) return (min+random(max - min));
// либо макрос
#define rand(%0,%1) (%0+random(%1 - %0))
// юзай так
rand(21,36);
Но дело в том, что числа должны быть не больше 31. В некоторых случаях даже 28, 29, 30.
Тоесть rand(21,20), диапозон чисел от 21 до 31, и от 1 до 20.
А если использовать код выше, то при rand(21,36); может выпасть число где то 50000, что не как не подходит под число месяца.
Помогите пожалуйста.
Re: Рандомная дата -
Stepashka - 13.12.2011
pawn Code:
randomDate(month, isLeapYear = false)
{
if (!(0 < month < 13)) return 0;
static monthDays[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 ,31};
monthDays[2] = (isLeapYear && month == 2) ? 29 : 28;
return (1 + random(monthDays[month] - 1));
}
Re: Рандомная дата -
ZiGGi - 13.12.2011
Quote:
Originally Posted by Mass_Deboose
А если использовать код выше, то при rand(21,36); может выпасть число где то 50000, что не как не подходит под число месяца.
Помогите пожалуйста.
|
при rand(21,36)
получится это
(21+random(15))
тут не может выпасть число 50000, максимальное - 35
Re: Рандомная дата -
Stepashka - 13.12.2011
Quote:
Originally Posted by ZiGGi
максимальное - 35 
|
36, random работает включительно.
Re: Рандомная дата -
Norck - 13.12.2011
Quote:
Originally Posted by Stepashka
36, random работает включительно.
|
Неужели?
Re: Рандомная дата -
CaHbKo - 13.12.2011
Quote:
Originally Posted by Stepashka
36, random работает включительно.
|
Какраз таки нет.
Quote:
Returns A random number ranging from 0 to max-1.
|
(21+random(15)) = 21 + (0 ... 14) = 21 .. 35
Re: Рандомная дата -
Stepashka - 13.12.2011
Quote:
Originally Posted by CaHbKo
Какраз таки нет.
|
ну тогда просто удалите из моего скрипта "- 1"
Re: Рандомная дата -
Mass_Deboose - 13.12.2011
Quote:
Originally Posted by ZiGGi
при rand(21,36)
получится это
(21+random(15))
тут не может выпасть число 50000, максимальное - 35 
|
Не знаю, выпало такое число при rand(21,20).
549357572
Re: Рандомная дата -
Norck - 13.12.2011
Quote:
Originally Posted by Mass_Deboose
Не знаю, выпало такое число при rand(21,20).
549357572
|
Всё ясно. Теперь попробуй rand(20,21). В результате должно получиться 20.
первый параметр - это минимальное значение
второй параметр - это (максимальное_значение)-1
Ты же их перепутал, вот и получилась такая белиберда
Re: Рандомная дата -
Mass_Deboose - 13.12.2011
Quote:
Originally Posted by Norck
Всё ясно. Теперь попробуй rand(20,21). В результате должно получиться 20.
первый параметр - это минимальное значение
второй параметр - это (максимальное_значение)-1
Ты же их перепутал, вот и получилась такая белиберда 
|
Разве я настолько глуп? Я их не перепутал и описал по поводу диапазона чисел в первом посте. Диапазон в этом случае 21 марта - 20 апреля.
Re: Рандомная дата -
Stepashka - 13.12.2011
Если тебе нужны такие диапазоны забудь про месяцы.
Re: Рандомная дата -
Mass_Deboose - 16.12.2011
Quote:
Originally Posted by Stepashka
pawn Code:
randomDate(month, isLeapYear = false) { if (!(0 < month < 13)) return 0; static monthDays[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 ,31}; monthDays[2] = (isLeapYear && month == 2) ? 29 : 28; return (1 + random(monthDays[month] - 1)); }
|
Использовать так?
pawn Code:
randomDate(месяц,високосный год или нет);
Немного понял, но это опять не совсем то, мне нужно, что бы например если месяц март, то число ниже 21 выпасть не как не должно. Так же мне нужно, что бы число выпадало не только от одного месяца марта, а например от марта и апреля. Ну примерно что бы так:
pawn Code:
randomDate(месяц1,месяц2,високосный год или нет);
Тобишь что бы число выпадало не от одного месяца, а от двух, март, апрель. Если март, то число не может быть ниже 21, если апрель, то число не может быть больше 20.
Побывал сделать сам, но получается что то ужасное.
Re: Рандомная дата -
Stepashka - 16.12.2011
Quote:
Originally Posted by Stepashka
Если тебе нужны такие диапазоны забудь про месяцы.
|
прочти это сообщение ещё раз!
Re: Рандомная дата -
Mass_Deboose - 16.12.2011
Quote:
Originally Posted by Stepashka
прочти это сообщение ещё раз!
|
Не понимаю.
Re: Рандомная дата -
Stepashka - 16.12.2011
Не привязывайся к месяцам, считай дни от начала года или как на сайтах, с использованием юникс тайм.
Re: Рандомная дата -
Mass_Deboose - 22.12.2011
Заплачу рублей 50 за нормальный код, который мне нужен. WMR