Про 123DiceRoller

123DiceRoller — це безкоштовний онлайн-симулятор, який кидає реалістичні 3D-кубики просто у вашому браузері. Його зроблено чесним, швидким і конфіденційним: результати дає криптографічно стійкий генератор випадкових чисел, кубики летять за законами справжньої фізики, а жодні дані про вас чи ваші кидки не надсилаються на сервер.

Як відбувається кидок, крок за кроком

  1. Спочатку вибираються числа. Для кожного кубика Web Crypto API вашого браузера (crypto.getRandomValues) видає випадкове 32-бітне число. Його перетворюють на грань методом вибірки з відхиленням: значення, через які менші грані випадали б хоч трохи частіше, відкидаються, — тож кожна грань N-гранного кубика має шанс рівно 1 з N.
  2. Кидок моделюється. Фізичний рушій твердих тіл (cannon-es) кидає кубики на стіл з урахуванням гравітації, тертя, відскоків і зіткнень кубиків між собою. Увесь кидок обчислюється за частку секунди, ще до того, як його покажуть.
  3. Кубики повертаються під результат. Кожна форма кубика симетрична: d20 можна повернути 60 різними способами, і він виглядатиме однаково. Симулятор вибирає той єдиний поворот, за якого вибране число опиняється там, де фізика поклала верхню грань, і застосовує його з першого ж кадру. Рух справжній, а число вже визначено заздалегідь — чесно.
  4. Кубики, що стали навскіс, перекидаються. Якщо якийсь кубик мав би зупинитися, спершись на інший, кидок непомітно повторюється — так само, як за справжнім столом попросили б перекинути.
  5. Кидок відтворюється з тінями, відблисками та звуком, синхронізованим із кожним ударом.

Чому б не дозволити фізиці вибирати число?

Бо симуляція — не чесне джерело випадковості. Дрібниці на кшталт початкового положення, кроку часу й округлення можуть змусити одні грані випадати частіше за інші, і ніхто не може довести, що цього не стається. Криптографічний генератор розроблено й перевірено саме для того, щоб він був непередбачуваним і рівномірним. Якщо розділити ці дві задачі, можна взяти найкраще від обох: кидок, який виглядає і звучить як справжній, і результат, якому можна довіряти.

Точні ймовірності

Шанси, які показано для кожного кидка, обчислено, а не вгадано. Суми рахуються згорткою, по одному кубику за раз, а кидки, де частину кубиків залишають або відкидають, як-от перевага, — перебором усіх різних результатів. Докладніше про метод — у калькуляторі ймовірності кубиків.

На чому зроблено сайт

  • three.js — 3D-графіка (ліцензія MIT)
  • cannon-es — фізика (ліцензія MIT)
  • Звичайний PHP на сервері — без бази даних, облікових записів і відстеження

Обидві бібліотеки завантажуються з цього сайту, а не зі стороннього CDN, тож сторінка ніколи не завантажує код звідкись іще.

Частина родини 123

123DiceRoller входить до однієї родини з 123Calculator та іншими нашими безкоштовними інструментами без реєстрації. Маєте запитання, ідеї чи знайшли помилку? Пишіть на hello@123diceroller.com.

Оновлено