Рандомная дата
#1

Дело в том, что я пытаюсь сделать что бывыпадало рандомное число, с определенного месяца по другой. 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, что не как не подходит под число месяца.
Помогите пожалуйста.
Reply
#2

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));
}
Reply
#3

Quote:
Originally Posted by Mass_Deboose
View Post
А если использовать код выше, то при rand(21,36); может выпасть число где то 50000, что не как не подходит под число месяца.
Помогите пожалуйста.
при rand(21,36)
получится это
(21+random(15))
тут не может выпасть число 50000, максимальное - 35
Reply
#4

Quote:
Originally Posted by ZiGGi
View Post
максимальное - 35
36, random работает включительно.
Reply
#5

Quote:
Originally Posted by Stepashka
View Post
36, random работает включительно.
Неужели?
Reply
#6

Quote:
Originally Posted by Stepashka
View Post
36, random работает включительно.
Какраз таки нет.
Quote:
Returns A random number ranging from 0 to max-1.
(21+random(15)) = 21 + (0 ... 14) = 21 .. 35
Reply
#7

Quote:
Originally Posted by CaHbKo
View Post
Какраз таки нет.
ну тогда просто удалите из моего скрипта "- 1"
Reply
#8

Quote:
Originally Posted by ZiGGi
View Post
при rand(21,36)
получится это
(21+random(15))
тут не может выпасть число 50000, максимальное - 35
Не знаю, выпало такое число при rand(21,20).
549357572
Reply
#9

Quote:
Originally Posted by Mass_Deboose
View Post
Не знаю, выпало такое число при rand(21,20).
549357572
Всё ясно. Теперь попробуй rand(20,21). В результате должно получиться 20.

первый параметр - это минимальное значение
второй параметр - это (максимальное_значение)-1

Ты же их перепутал, вот и получилась такая белиберда
Reply
#10

Quote:
Originally Posted by Norck
View Post
Всё ясно. Теперь попробуй rand(20,21). В результате должно получиться 20.

первый параметр - это минимальное значение
второй параметр - это (максимальное_значение)-1

Ты же их перепутал, вот и получилась такая белиберда
Разве я настолько глуп? Я их не перепутал и описал по поводу диапазона чисел в первом посте. Диапазон в этом случае 21 марта - 20 апреля.
Reply
#11

Если тебе нужны такие диапазоны забудь про месяцы.
Reply
#12

Quote:
Originally Posted by Stepashka
View Post
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.
Побывал сделать сам, но получается что то ужасное.
Reply
#13

Quote:
Originally Posted by Stepashka
View Post
Если тебе нужны такие диапазоны забудь про месяцы.
прочти это сообщение ещё раз!
Reply
#14

Quote:
Originally Posted by Stepashka
View Post
прочти это сообщение ещё раз!
Не понимаю.
Reply
#15

Не привязывайся к месяцам, считай дни от начала года или как на сайтах, с использованием юникс тайм.
Reply
#16

Заплачу рублей 50 за нормальный код, который мне нужен. WMR
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)