123DiceRoller — це безкоштовний онлайн-симулятор, який кидає реалістичні 3D-кубики просто у вашому браузері. Його зроблено чесним, швидким і конфіденційним: результати дає криптографічно стійкий генератор випадкових чисел, кубики летять за законами справжньої фізики, а жодні дані про вас чи ваші кидки не надсилаються на сервер.
Як відбувається кидок, крок за кроком
- Спочатку вибираються числа. Для кожного кубика Web Crypto API вашого браузера (
crypto.getRandomValues) видає випадкове 32-бітне число. Його перетворюють на грань методом вибірки з відхиленням: значення, через які менші грані випадали б хоч трохи частіше, відкидаються, — тож кожна грань N-гранного кубика має шанс рівно 1 з N. - Кидок моделюється. Фізичний рушій твердих тіл (cannon-es) кидає кубики на стіл з урахуванням гравітації, тертя, відскоків і зіткнень кубиків між собою. Увесь кидок обчислюється за частку секунди, ще до того, як його покажуть.
- Кубики повертаються під результат. Кожна форма кубика симетрична: d20 можна повернути 60 різними способами, і він виглядатиме однаково. Симулятор вибирає той єдиний поворот, за якого вибране число опиняється там, де фізика поклала верхню грань, і застосовує його з першого ж кадру. Рух справжній, а число вже визначено заздалегідь — чесно.
- Кубики, що стали навскіс, перекидаються. Якщо якийсь кубик мав би зупинитися, спершись на інший, кидок непомітно повторюється — так само, як за справжнім столом попросили б перекинути.
- Кидок відтворюється з тінями, відблисками та звуком, синхронізованим із кожним ударом.
Чому б не дозволити фізиці вибирати число?
Бо симуляція — не чесне джерело випадковості. Дрібниці на кшталт початкового положення, кроку часу й округлення можуть змусити одні грані випадати частіше за інші, і ніхто не може довести, що цього не стається. Криптографічний генератор розроблено й перевірено саме для того, щоб він був непередбачуваним і рівномірним. Якщо розділити ці дві задачі, можна взяти найкраще від обох: кидок, який виглядає і звучить як справжній, і результат, якому можна довіряти.
Точні ймовірності
Шанси, які показано для кожного кидка, обчислено, а не вгадано. Суми рахуються згорткою, по одному кубику за раз, а кидки, де частину кубиків залишають або відкидають, як-от перевага, — перебором усіх різних результатів. Докладніше про метод — у калькуляторі ймовірності кубиків.
На чому зроблено сайт
- three.js — 3D-графіка (ліцензія MIT)
- cannon-es — фізика (ліцензія MIT)
- Звичайний PHP на сервері — без бази даних, облікових записів і відстеження
Обидві бібліотеки завантажуються з цього сайту, а не зі стороннього CDN, тож сторінка ніколи не завантажує код звідкись іще.
Частина родини 123
123DiceRoller входить до однієї родини з 123Calculator та іншими нашими безкоштовними інструментами без реєстрації. Маєте запитання, ідеї чи знайшли помилку? Пишіть на hello@123diceroller.com.
Оновлено