---

name: Детерминированность
theory: |

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

  ```php
  <?php

  strrev('cat'); // tac
  strrev('cat'); // tac
  ```

  Сколько бы раз мы её не вызывали, передавая туда значение `'cat'`, она всегда вернет `'tac'` (хотя технически можно написать её и по-другому, но смысла в этом никакого, а проблем доставит). В свою очередь, функция, возвращающая случайное число, не является детерминированной, так как у одного и того же входа (даже если он пустой, то есть аргументы не принимаются) мы получим всегда разный результат. Насколько он разный - не важно, даже если хотя бы один из миллиона вызовов вернет что-то другое, эта функция автоматически считается недетерминированной.

  ```php
  <?php

  rand(); // 827606195
  rand(); // 635369726
  ```

  Зачем это нужно знать? Детерминированность серьёзно влияет на многие аспекты. Детерминированные функции удобны в работе, их легко оптимизировать, легко тестировать. Если есть возможность сделать функцию детерминированной, не раздумывая делайте её такой.

instructions: |

 Выведите на экран случайное число от 1 до 6. Для реализации вам потребуется функция `rand()`, которая может принимать два числа: начальное и конечное

tips:
  - |
    [Детерминированные функции](https://ru.wikipedia.org/wiki/Чистота_функции#Детерминированность_функции)

# definitions:
#   - name: Детерминированность функции
#     description: |
#       для одного и того же входа, всегда один и тот же выход.
