Случайность и шум
Две операции про непредсказуемость: одна каждый раз разная, вторая плавная
rand даёт случайное число от нуля до заданного, не включая его самого, и число это
дробное. Кубик из него получается в две строки: сначала бросок, потом округление вниз.
op rand бросок 6 даёт дробное число меньше шести — скажем, 2.09; floor отрезает дробь
и оставляет 2; прибавили единицу — вышло от 1 до 6, как у настоящего кубика. Нажмите «шаг»
несколько раз: бросок будет каждый раз новый.
Порядок здесь важен. Если сперва округлить rand 5, а потом прибавить, шестёрка выпадать
не будет вовсе; если взять rand 7 и округлить, изредка выпадет семь. Кубик на N граней —
это всегда rand N, floor, add 1.
В примере числа всегда одни и те же
Заголовок раздела «В примере числа всегда одни и те же»Нажмите «сначала» и прогоните пример заново — выпадет то же самое. В игре так не бывает: там генератор засевается при запуске случайно, и одна и та же программа каждый раз даёт разные числа.
Здесь зерно закреплено намеренно: урок обещает числа, тесты их проверяют, а пример, который каждый раз показывает разное, ничему научить не может. Помните об этом, когда перенесёте программу в игру: там повторов не будет.
Шум — это не случайность
Заголовок раздела «Шум — это не случайность»noise берёт две координаты и отдаёт число примерно от −1 до 1. Оно не случайное:
у одной и той же точки ответ всегда один, а у соседних — почти одинаковый.
В примере точки (10, 10) и (10.01, 10) дали −0.524 и −0.520 — соседи, и ответы рядом. А (40, 10) далеко, и ответ там совсем другой: 0.908.
Именно этим шум и полезен. Случайное число прыгает, и построенное на нём мерцает; шум меняется плавно, поэтому из него выходят холмы, пятна руды, разводы на карте — всё, что должно выглядеть неровным, но не рваным. Игра рисует им местность, а в логике им удобно задавать плавно гуляющее значение: скорость, задержку, яркость.
Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.