0.5
. На счет логики - имеется коллекция сущностей, каждая из которых имеет некоторое число, представляющее собой шанс выпадения той или иной сущности. В данном примере сумма шансов может быть больше, потому как значения интерполируются. По итогу, функция выбирает некий шанс от [0; max]
, где max
- это сумма всех шансов сущностей. Далее функция перебирает всю коллекцию и проверяет, лежит ли выбранный шанс в определенном интервале [накопленный_шанс; накопленный_шанс + текущий_шанс)
, и если это так, то вернет текущий элемент из цикла; нет - добавит к накопленному шансу шанс текущего элемента. Написано сложно, работает просто:1
. Всего 1.3
.0 <= 1 (Да) И 1 < 0 + 0.7 (Нет)
-> В накопленный шанс добавляем 0.7
.0.7 <= 1 (Да) И 1 < 0.7 + 0.25 (Нет)
-> В накопленный шанс добавляем 0.25
, становится 0.95
.0.95 <= 1 (Да) И 1 < 0.95 + 0.25 (Да)
-> Мы попали в интервал, возвращаем Spoon
.Z
при парсинге будет добавлять таймзону. Например у меня +6 GMT. По итогу получу не 10 часов, а 16 часов. Без Z
- получу 10. Но с датами лучше работать используя таймзону. Иначе может случится так, что пользователь окажется в прошлом.
./resources/sass/app.scss
? И больше не прикладывайте логи скриншотом. Не прочитать, не выделить, и в правилах сказано использовать спец. тэги (спойлер + код).