Случайное число на php. Случайные числа. Случайные числа в PHP

Ме́сяц (лат. mēnsis ) - единица измерения времени, связанная с обращением Луны вокруг Земли. Поэтому лунные месяцы являются основой многих календарей.

Но для удобства счета дней следует использовать целые числа, а различные периоды обращения Луны составляют 27,2-29,6 суток и в целых сутках исчислены быть не могут. Поэтому календари всегда стремились компенсировать неточность переменной продолжительностью месяцев и введением дополнительных дней.

В астрономии выделяют синодический месяц, сидерический месяц, тропический месяц, аномалистический месяц, драконический месяц. В чем же различия между ними?

Синодический месяц - промежуток времени между двумя последовательными одинаковыми фазами Луны (например, новолуниями). Продолжительность непостоянна; среднее значение составляет 29,5305882 средних солнечных суток (29 суток 12 часов 44 минуты 2,82 секунды), действительная длительность синодического месяца отличается от среднего в пределах 13 часов.

Сидерический месяц - промежуток времени между двумя последовательными возвращениями Луны, при её видимом месячном движении, в одно и то же (относительно звёзд) место небесной сферы. Продолжительность составляет 27,3216610 суток (27 суток 7 часов 43 минуты 11,51 секунды).

Тропический месяц - период обращения Луны вокруг Земли, отсчитываемый относительно той же долготы. Равен 27,3215817 средних солнечных суток (27 суток 7 часов 43 минуты 4,66 секунды).

Аномалистический месяц - промежуток времени между двумя последовательными прохождениями Луны через перигей в её движении вокруг Земли. Продолжительность в начале 1900 года составляла 27,554551 средних солнечных суток (27 суток 13 часов 18 минут 33,16 секунд), убывает на 0,095 сек за 100 лет.

Таким образом, какие бы периоды обращения Луны мы ни взяли для исходного отсчета, в сутках не может быть

Драконический месяц - промежуток времени между двумя последовательными прохождениями Луны через один и тот же (восходящий или нисходящий) узел орбиты в её движении вокруг Земли. Продолжительность в начале 1900 года составляла 27,2122204 средних солнечных суток (27 суток 5 часов 5 минут 35,84 секунды), увеличивается на 0,0035 сек. за 100 лет.

Таким образом, какие бы периоды обращения Луны мы ни взяли для исходного отсчета, месяц невозможно выразить целым числом суток. Поэтому и в юлианском, и в григорианском календарях используется фиксированная длина месяца, не связанная со сменой фаз Луны.

Номер месяца

Название месяца

Январь

Февраль

Март

Апрель

Июнь

Июль

Август

Сентябрь

Октябрь

Ноябрь

Декабрь

Количество дней

28 (29 високосн.)

Названия месяцев

У различных народов мира месяцы изначально назывались по характерным природным явлениям, например, в русском до внедрения латинских названий: январь - «студень», апрель - «цветень», октябрь - «жёлтень» и т. п.

В настоящее время многие языки приняли для обозначения месяцев латинские корни: «месяц Юноны » (Июнь ), «месяц Юлия Цезаря» (Июль ), «месяц Октавиана Августа » (Август ) и т. д.

Но во многих славянских языках названия месяцев имеют славянскую этимологию. И названия эти даже поэтичны. Вот, например, как называются месяцы в белорусском языке:

Студзень (январь) – холодный, студеный месяц

Люты (февраль) – обычно стоят лютые морозы

Сакавiк (март) – деревья начинают сокодвижение

Красавiк (апрель) – возрождение красоты в природе

Травень (май)

Чэрвень (июнь) – появляются красные ягоды и цветы

Лiпень (июль) – цветет липа

Жнiвень (август)- начало жатвы, уборки урожая

Верасень (сентябрь) - цветет вереск

Кастрычнiк (октябрь) - переработка овса, льна или конопли; кострица – продукт переработки

Лiстапад (ноябрь)

Снежань (декабрь)

Особенностью расчета отпускных дней в январе является наличие дней переносов праздничных дней на обычные выходные. В январе 2019 года есть нюансы при расчете отпускных. Как бухгалтеру считать дни отпуска в январе 2019 года - читайте в статье.

Из статьи «Расчет дней отпуска с декабря по январь 2019» вы узнаете:

  • Как посчитать продолжительность отпуска в январе 2019 года
  • Исходя из какой продолжительности месяца оплачивать отработанные в январе дни
  • Пример расчета
  • Официальные дни праздников в январе 2019 года

    В декабре 2019 года в конце месяца будет рабочая суббота 29 декабря. Этот день перенесен на понедельник 31 декабря, чтобы не разрывать выходные и праздники. Данные дни входят в число дней отпуска, поэтому отпускные за них начисляются.

    Далее идут новогодние праздники с 1 по 8 января, из них периоды с 1 по 6 и 8 января считаются Новогодними каникулами, а 7 января является Рождественским днем. Эти дни все праздничные, они в число дней отпуска не входят. Отпускные за эти дни не начисляются.

    Никаких перенесенных дней на январь 2019 года не попало. Соответственно данные праздничные дни продолжительность отпуска не увеличивают и не оплачиваются.

    Как считать дни отпуска за январь, если часть из них приходится на новогодние каникулы?

    Согласно статье 120 ТК РФ официальные праздники в отпуск не включаются и не оплачиваются. Причем, неважно, по какому графику работает сотрудник. Даже если он работает не на пятидневке и официальный праздник мог бы стать его рабочим днем, если бы не отпуск, все равно в оплачиваемые дни отпуска официальный праздничный день не включается.

    Например, если работник берет отпуск с 27 декабря по 10 января 2019 года, то отпуск будет оплачен только за период с 27 по 31 декабря и за период с 9 по 10 января (5 дней в декабре и 2 дня в январе, итого 7). А праздники с 1 по 8 января в расчет отпуска не войдут. При этом работник израсходует только 7 дней из 28, положенные ему в год. А остальные дни не войдут в ежегодные дни отпуска.

    Статья 120 ТК РФ. Исчисление продолжительности ежегодных оплачиваемых отпусков):

    Продолжительность ежегодных основного и дополнительных оплачиваемых отпусков работников исчисляется в календарных днях и максимальным пределом не ограничивается. Нерабочие праздничные дни, приходящиеся на период ежегодного основного или ежегодного дополнительного оплачиваемого отпуска, в число календарных дней отпуска не включаются.

    Нерабочими праздничными днями в России являются:

    Дни с 1 по 8 января не включаются в расчет отпуска. Поэтому брать отпуск с включением новогодних каникул чаще всего очень невыгодно. Правда, еще более невыгодно брать отпуск в середине или конце января. Рассмотрим на примере.

    Пример расчета отпускных в январе 2019 года

    Сотрудник идет в отпуск с 01.01.2018 по 11.01.2019. Его средний заработок для расчета отпускных составляет 1 600 руб. Оклад его составляет 47 000 руб.

    В январе 31 день, из них 17 рабочих, а 14 выходных и праздничных.

    Продолжительность отпуска при указанных датах составляет всего 3 дня (9, 10 и 11). Значит, отпускных он получит 1 600 * 3 = 4 800 руб.

    При этом заработная плата его составит 47 000 / 17 x 14 = 38 705,88 руб.

    Здесь 17 - количество рабочих дней в январе, 14 - количество фактически отработанных дней в январе.

    Итого доход получится всего 4 800 + 38 705,88 = 43 505,88 руб.

    Для сравнения если период отпуска сдвинуть на месяц, т. е. взять те же 11 календарных дней, но с 1 по 11 февраля, то доход будет совсем иной. Отпускные уже составят 1 600 * 11 = 17 600 руб. Зарплата составит 47 000 / 19 * 12 = 29 684,21 руб. А совокупный доход за февраль соответственно – 47 284,21 руб.

    Как считать оплату за отработанные в январе дни?

    Рабочих дней в январе 2019 года 17. Соответственно для получения суммы заработной платы для работников пятидневки необходимо сумму оклада разделить на 17 и умножить на количество фактически отработанных после выхода из отпуска дней.

    Как уже было указано выше, брать отпуск в середине января еще более невыгодно, чем в начале. Для примера можно снова взять период отпуска в 11 дней, но с 15 по 25 января. Остальные условия оставим прежними: средний заработок 1 600 руб. и оклад 47 000 руб.

    Отпускные составят 11 * 1 600 = 17 600 руб. В данном случае все дни отпуска оплачиваются. А вот отработанных дней остается всего 8. Зарплата составит 47 000 / 17 * 8 = 22 117,64 руб. Весь доход за январь получится равным 17 600 + 22 117,64 = 39 717,65 руб. В сравнении с любой из приведенных выше сумм этот доход самый маленький. Именно поэтому брать отпуск в январе не рекомендуется.

    Когда выгодно брать отпуск в 2019 году

    Работодатели обязаны подчиняться трудовому законодательству, который обязывает их, в частности, предоставлять всем без исключения сотрудникам (включая дистанционных) ежегодный оплачиваемый отпуск. Право на первый отдых после трудоустройства на фирме возникает у работника через полгода непрерывной работы на предприятии, если только наниматель не готов пойти на уступку и отпустить подчиненного на отдых раньше. Отпуск за второй год и каждый из последующих лет можно оформлять в любое время рабочего года, ориентируясь на график отпусков. Давайте выясним, когда выгодно брать отпуск в 2019 году.

    Когда выгодно брать отпуск в 2019 году - выгода по оплате и количеству дней отдыха

    Прежде чем ответить на вопрос, когда выгодно брать отпуск в 2019 году, следует разобраться с тем, с какой точки зрения отпуск должен оказаться выгодным сотруднику:

    • по оплате (получить максимально большую сумму отпускных);
    • по количеству дней отдыха (взять меньше дней отпуска, а в итоге уйти в более продолжительный по времени отпуск).

    Если ориентироваться на то, чтобы выиграть в денежном плане, наиболее существенная выгода наблюдается в том случае, если взять отпуск в выходные дни, поскольку выходные, входящие в отпуск, будут оплачены, и они учитываются в количестве календарных дней ежегодного отпуска. По деньгам может оказаться выгодным оформление отпуска и в некоторых других случаях, но это будет зависеть от того:

    • сколько дней человек отработал в том месяце, в котором ушел в отпуск;
    • входят ли в период отпуска нерабочие праздничные дни, или не входят.

    Если же для сотрудника важнее взять как можно больше дней отдыха, можно оформить отпуск с январскими или майскими праздниками. Также имеется второй вариант - оформить отпуск, к примеру, на 5 календарных дней (с понедельника по пятницу). В итоге длительность отдыха составит не 5, а 9 дней, так как в отпуск войдут 4 выходных дня.

    Когда выгодно брать отпуск в 2019 году по деньгам

    В том месяце, в течение которого оформляется отпуска, выплата сотрудника состоит из отпускного пособия и заработной платы за отработанные дни.

    Отпускные рассчитываются на основании календарных, а не рабочих дней. Среднедневной доход работника при исчислении отпускных определяется исходя из среднемесячного числа дней в месяце (фиксированная величина - 29,3). То есть, притом что максимально возможное количество рабочих дней в месяце составляет 23, среднемесячное число дней 29,3 оказывается существенно больше. Это означает, что в любом месяце при условии получения одинаковой зарплаты отпускные выплаты будут равны между собой. Но выплаты по части заработной платы за отработанное в течение месяца время будут тем больше, чем большее количество дней было отработано в рассматриваемом месяце.

    Теперь разберемся с зарплатой. Заработная плата за отработанные дни рассчитывается путем деления оклада на число трудовых дней в месяце и умножением результата частного на число фактически отработанных дней. В январе, феврале и мае меньше всего рабочих дней из-за праздников (январь, май) и числа календарных дней (февраль), а потому в этих месяцах каждый рабочий день стоит дороже, чем в других месяцах. Соответственно, в месяцах с 31 календарным днем, в которых нет праздников, рабочие дни самые дешевые.

    Продемонстрируем данное утверждение на примере. Пусть оклад сотрудника составляет 25 000 рублей. Тогда в августе (притом, что в данном месяце 23 рабочих дня - максимально возможное число трудовых дней) рабочий день будет оцениваться в 1086,95 рублей. А в январе из-за праздников рабочих дней мало - всего 18. Соответственно, один рабочий день в январе стоит 1388,88 рублей.

    Важно! Количество рабочих и выходных дней меняется из года в год, и это следует учитывать при выборе времени отпуска.

    Вывод - по деньгам наиболее выгодным вариантом является оформление отпуска в том месяце, в котором меньше всего праздников и выходных, но больше всего рабочих дней. Что касается продолжительности отпуска, если работник хочет отдохнуть как можно дольше, ему следует брать отпуск, в течение которого имеют место нерабочие праздничные дни - при расчете отпускных такие дни учитываться не будут, зато длительность отпуска увеличится за счет праздников, совпавших с ним.

    Пример 1 - Отпуск оформляется в июле (когда выгодно брать отпуск в 2019 году)

    Работник отработал в июле 11 рабочих дней из 21 и решил уйти в отпуск с 17 июля 2018 года на 14 календарных дней. Зарплата сотрудника составляет 50 тысяч рублей. Доход за расчетный период (с 17.07.2017 по 16.07.2018), отработанный полностью, равен 600 000 рублей (50000 р. х 12 мес.) .

    Рассчитаем среднедневной заработок:

    (1706,48 руб. х 14 дн.) = 23890,72 руб.

    Никаких праздников в период отпуска нет. Рассчитаем заработную плату за отработанные 11 дней: (50 000 р. : 21 дн. х 11 дн.) = 26190,47 руб.

    Итого за июль 2018 года работнику будет выплачено: (23890,72 р. + 26190,47 р.) = 50081,19 руб.

    Пример 2 - Отпуск в мае не включает праздничные дни

    Работник, согласно графику отпусков, пойдет в отпуск с 15 мая на 14 календарных дней. Сотрудник ежемесячно получает 50 000 рублей. Расчетный период был отработан полностью (с 01.05.2017 по 30.04.2018). За расчетный период всего заработано 600 000 рублей (50 000 р. х 12 мес.).

    (600 000 р. : 12 мес. : 29,3 дн.) = 1706,48 руб.

    Отпускные будут выплачены в размере: (1706,48 х 14 дн.) = 23890,72 руб.

    Заработная плата в мае будет выплачена за 10 рабочих дней (всего рабочих дней в мае 20): (50 000 р. : 20 дн. х 10 дн.) = 25 000 руб.

    За месяц май сотрудник получит в общей сложности: (23890,72 р. + 25 000 р.) = 48890,72 руб.

    Пример 3 - Отпуск в мае совпал с праздниками

    Работник, согласно графику отпусков, пойдет в отпуск с 1 мая на 14 календарных дней. Сотрудник ежемесячно получает 50 000 рублей. Расчетный период был отработан полностью (с 01.05.2017 по 30.04.2018). За расчетный период всего заработано 600 000 рублей (50 000 р. х 12 мес.).

    Среднедневной заработок составит: (600 000 р. : 12 мес. : 29,3 дн.) = 1706,48 руб.

    В течение отпуска отмечается 2 праздника (1 мая и 9 мая), а потому оплачено будет не 14 календарных дней, а только 12 дней отпуска, т.к. праздники не включаются в расчет отпускных выплат. Зато отпуск будет увеличен на 2 дня за счет праздников, а потому ближайшим рабочим днем является 17 мая.

    Производит инициализацию генератора случайных чисел. Синтаксис:

    Void srand(int seed)

    Инициализирует генератор случайных чисел значением seed.

    Srand((double) microtime()*1000000);
    $random = rand();
    echo $random;

    GETRANDMAX

    Возвращает максимально возможное случайное число. Синтаксис:

    Int getrandmax()

    Эта функция возвращает максимальное значение, которое можно получить при помощи функции генерации случайных чисел rand().

    Обычно это 32767

    Производит генерацию случайного числа. Синтаксис:

    Int rand(])

    При вызове с необязательными параметрами min и max эта функция генерирует случайное число, лежащее в пределах этих параметров включительно. Если параметры min и max отсутствуют, возвращается число, лежащее в пределах от 0 до RAND_MAX.

    Для корректной работы данной функции перед ее использованием нужно проинициализировать генератор случайных чисел функцией srand().

    lcg_value()

    LCG-генератор псевдо-случайных чисел (PHP 4, PHP 5)

    Описание:

    Float lcg_value (void)

    lcg_value() возвращает псевдослучайное число в диапазоне (0, 1). Функция объединяет два генератора c 2^31 - 85 и 2^31 - 249 в периоде.

    mt_getrandmax()

    Показывает наибольшее возможное случайное значение (PHP 3 >= 3.0.6, PHP 4, PHP 5)

    Описание:

    Int mt_getrandmax (void)

    Показывает максимальное значение, которое может быть возвращено функцией mt_rand()

    mt_rand()

    Генерирует лучшее случайное значение (PHP 3 >= 3.0.6, PHP 4, PHP 5)

    Описание:

    Int mt_rand ()

    Многие генераторы случайных чисел старых версий имеют сомнительные характеристики и работают медленно. По умолчанию PHP использует генератор случайных чисел функции rand(). Функция mt_rand() является хорошей ее заменой. Она использует рандомный генератор чисел, работающий в 4 раза быстрее, чем rand(), и использующий Mersenne Twister.

    Вызванная без необязательных аргументов min и max, mt_rand() возвращает псевдо-случайное значение, расположенное между 0 и RAND_MAX. При необходимости получить, к примеру, случайные значения между 5 и 15 включительно, ишется mt_rand (5, 15).

    Пример применения mt_rand()

    Результатом выполнения данного примера будет что-то подобное:

    1604716014
    1478613278
    6

    Замечание

    Замечание : В версиях до 3.0.7 второй параметр функции указывал диапазон чисел. Например, для получения случайных чисел между 5 и 15 в этих версиях требуется задать функцию mt_rand (5, 11).

    mt_srand()

    Устанавливает начальное значение лучшего генератор случайных чисел (PHP 3 >= 3.0.6, PHP 4, PHP 5)

    Описание:

    Void mt_srand ()

    Устанавливает начальное значение генератора случайных чисел с помощью seed. Начиная с PHP 4.2.0, seed не является обязательной, и установки по умолчанию для случайных значений опускаются.

    Пример использования mt_srand()

    Замечание : Начиная с PHP 4.2.0, больше нет необходимости инициализировать генератор случайных чисел функциями srand() или mt_srand(), поскольку теперь это происходит автоматически.

    Технически термин «генератор случайных чисел» – это абсурд, так как числа сами по себе не являются случайными. Например, 100 – это случайное число? А 25? Что в действительности означает этот термин, так это то, что создается последовательность чисел, появляющихся случайным образом. Это порождает более сложный вопрос: что такое последовательность случайных чисел? Единственно правильный ответ: последовательность случайных чисел – это последовательность, в которой все элементы являются несвязанными. Это определение приводит к такому парадоксу, что любая последовательность может быть как случайной, так и неслучайной в зависимости от того, как эта последовательность получена. Например, следующая строка чисел
    1 2 3 4 5 6 7 8 9 0
    была получена печатанием верхней строки клавиатуры по порядку, таким образом, последовательность не может рассматриваться как сгенерированная случайным образом. Но как быть, если вы получите ту же самую последовательность, вынимая пронумерованный теннисные шары из бочонка. В данном случае это уже случайным образом сгенерированная последовательность. Данный пример показывает, что случайность последовательности зависит от того, как она была получена, а не от нее самой.

    Помните, что последовательность чисел, сгенерированная компьютером, является детерминированной: каждое число, кроме первого, зависит от предшествующих чисел. Технически это означает, что компьютером может быть сгенерирована только квазислучайная последовательность чисел, т.е. на самом деле они не являются истинно случайными. Однако, этого достаточно для большинства задач и такие последовательности для простоты будут называться случайными. Один очень интересный метод был разработан Джоном фон Нейманом; его часто называют среднеквадратичным. В данном методе предыдущее случайное число возводится в квадрат, а затем из результата выделяются средние цифры. Например, если вы создаете числа из трех цифр, а предыдущее число было 121, то возведение в квадрат дает результат 14641. Выделение трех средних цифр дает следующее случайное число 464. Недостатком данного метода является то, что он имеет очень короткий период повторения, называемый циклом. По данной причине данный метод сегодня не используется. Современные методы генерации случайных чисел значительно сложнее.

    Случайные числа в PHP

    В PHP есть две группы функций по работе со случайными числами. Чисто внешне их можно отличить по префиксу mt_ у всех функций одной из групп.

    Устаревшие функции
    Функция rand. Возвращает целое число от нуля до значения RAND_MAX (которое равно 32767). Может иметь два необязательных целых параметра - если они указаны, то генерируется случайное число от первого параметра до второго.

    Echo rand(); echo rand(1,100); // Выдаем случайное число от 1 до 100

    Функция srand. Задает последовательность случайных чисел, выдаваемую функцией rand. Имеет целый параметр - при разных значениях этого параметра rand будет выдавать разные последовательности чисел. Функцию srand достаточно вызвать только один раз перед всеми вызовами функции rand. Пример использования:

    Srand(1288); // Инициализация генератора случайных чисел for($i=0; $i

    
    Top