generated from hexlet-basics/exercises-template
-
Notifications
You must be signed in to change notification settings - Fork 3
/
description.ru.yml
44 lines (29 loc) · 4.21 KB
/
description.ru.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
---
name: Детерминированность
theory: |
Независимо от того, какой язык программирования используется, функции внутри него обладают некоторыми фундаментальными свойствами. Зная эти свойства, легче прогнозировать поведение функций, способы их тестирования и место их использования. К таким свойствам относится детерминированность. Функция называется детерминированной тогда, когда для одних и тех же входных параметров она возвращает один и тот же результат. Например, функция, считающая количество символов, детерминированная:
```javascript
import { length } from 'hexlet-basics/string';
length('hexlet'); // 6
length('hexlet'); // 6
length('wow'); // 3
length('wow'); // 3
```
Сколько бы раз мы ни вызывали эту функцию, передавая туда значение `'hexlet'`, она всегда вернет `6`. В свою очередь функция, возвращающая случайное число, не является детерминированной, так как у одного и того же входа (даже если он пустой, то есть параметры не принимаются) мы получим всегда разный результат. Насколько он разный - не важно, даже если хотя бы один из миллиона вызовов вернет что-то другое, эта функция автоматически считается недетерминированной.
```javascript
// Функция, возвращающая случайное число
Math.random(); // 0.09856613113197676
Math.random(); // 0.8839904367241888
```
Зачем это нужно знать? Детерминированность серьезно влияет на многие аспекты. Детерминированные функции удобны в работе, их легко оптимизировать, легко тестировать. Если есть возможность сделать функцию детерминированной, то лучше ее такой и сделать
instructions: |
Функция `Math.random()` возвращает случайное число от 0 до 1 с большим количеством знаков после запятой. Но в реальных задачах бывает нужно получать случайные целые числа, например, в диапазоне от 0 до 10. Реализуйте код, который печатает на экран именно такие числа. Для этой задачи вам понадобятся функции [Math.random()](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Math/random) и [Math.round()](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Math/round)
Попробуйте решить это задание в одну строчку
## Алгоритм
Так как `Math.random()` возвращает числа в диапазоне от 0 до 1, то чтобы получить числа от 0 до 10, нам нужно выполнить умножение на 10. Затем получившиеся число округляется и так мы получаем то, что нужно.
tips:
- |
[Детерминированные функции](https://ru.wikipedia.org/wiki/Чистота_функции#Детерминированность_функции)
definitions:
- name: Побочный эффект
description: "действие, которое изменяет внешнее окружение (среду выполнения). Например, вывод на экран или отправка письма."