Rzut kostką
Rzut kostką to wylosowanie jednej ze ścianek, z których każda ma dokładnie równe szanse.
Czytaj więcej…Czytaj mniej
Kalkulator rzuca w Twojej przeglądarce od jednej do dziesięciu kostek naraz, od czterościennej k4 po dwudziestościenną k20, i podaje oczka każdej kostki, sumę, rozkład wyników oraz serie do 1000 rzutów. Losowość pochodzi z kryptograficznego generatora przeglądarki, a nie z funkcji Math.random.Jak rzucić kostką online
Rzut zajmuje jedno kliknięcie. Kalkulator startuje z jedną kostką sześcienną, więc wystarczy nacisnąć przycisk.
- Wybierz, iloma kostkami rzucasz. Od jednej do dziesięciu naraz. Przy kilku kostkach panel podaje oczka każdej z nich osobno oraz sumę.
- Wskaż liczbę ścianek. Kostka k6 to standard gier planszowych. Komplet k4, k8, k10, k12 i k20 obsługuje gry fabularne.
- Ustaw liczbę rzutów. Jeden rzut wystarcza do gry. Seria 10, 100 albo 1000 rzutów pokazuje, jak rozkładają się sumy na dłuższą metę.
- Kliknij przycisk rzutu. Wynik pojawia się bez przeładowania strony, razem z licznikiem wszystkich rzutów wykonanych w tej sesji.
- Odczytaj podsumowanie serii. Przy serii panel podaje rozkład sum, średnią zestawioną z wartością oczekiwaną, najniższy i najwyższy wynik oraz najdłuższą passę tej samej sumy.
Seria 1000 rzutów liczy się partiami po sto, więc przeglądarka nie zawiesza się na czas obliczeń nawet na słabszym telefonie.
Dlaczego suma dwóch kostek nie jest równomierna
Suma dwóch kostek nie jest równomierna, bo różne sumy mają różną liczbę układów oczek. Jedna kostka daje sześć wyników o równych szansach. Dwie kostki dają 36 par, ale tylko 11 różnych sum, więc na jedną sumę przypada od jednego do sześciu układów.
Poniższa tabela rozpisuje wszystkie 36 kombinacji. Wiersz to wynik pierwszej kostki, kolumna wynik drugiej, a w środku stoi suma. Przekątna z siódemkami biegnie przez całą tabelę i to jest sedno sprawy.
| Kostka 1 ↓ Kostka 2 → | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
Siódemka zajmuje sześć pól, bo jest jedyną sumą osiągalną z każdą wartością pierwszej kostki. Dwójka i dwunastka zajmują po jednym polu, bo wymagają konkretnej pary. Stąd bierze się rozkład trójkątny: prawdopodobieństwo rośnie liniowo od 2 do 7 i tak samo liniowo maleje od 7 do 12.
| Suma | Układy oczek | Liczba układów | Prawdopodobieństwo |
|---|---|---|---|
| 2 | 1+1 | 1 | 2,78% |
| 3 | 1+2, 2+1 | 2 | 5,56% |
| 4 | 1+3, 2+2, 3+1 | 3 | 8,33% |
| 5 | 1+4, 2+3, 3+2, 4+1 | 4 | 11,11% |
| 6 | 1+5, 2+4, 3+3, 4+2, 5+1 | 5 | 13,89% |
| 7 | 1+6, 2+5, 3+4, 4+3, 5+2, 6+1 | 6 | 16,67% |
| 8 | 2+6, 3+5, 4+4, 5+3, 6+2 | 5 | 13,89% |
| 9 | 3+6, 4+5, 5+4, 6+3 | 4 | 11,11% |
| 10 | 4+6, 5+5, 6+4 | 3 | 8,33% |
| 11 | 5+6, 6+5 | 2 | 5,56% |
| 12 | 6+6 | 1 | 2,78% |
Siódemka wypada sześć razy częściej niż dwójka i sześć razy częściej niż dwunastka. To dlatego w Monopoly pola oddalone o siedem kroków od więzienia odwiedza się najczęściej, a w grze w kości zakład na siódemkę jest najpopularniejszy. Nierównomierność sumy jest też powodem, dla którego gry fabularne każą czasem rzucać trzema kostkami zamiast jedną: trzy k6 dają zakres 3 do 18, ale wyniki skupiają się wokół 10 i 11, więc bohater rzadziej trafia w skrajność.
Przy większej liczbie kostek efekt się pogłębia. Trzy kostki sześcienne mają już 216 kombinacji, a sumy 10 i 11 osiąga po 27 z nich, czyli po 12,5 procent, podczas gdy sumę 3 tylko jedna, czyli 0,46 procent. Panel wyniku pokazuje ten rozkład dla dowolnego zestawu kostek i zestawia go z liczbą rzutów, które faktycznie wypadły. Udziały procentowe z tabeli przeliczysz na inne podstawy kalkulatorem procentowym, a średnią z serii wyników policzysz kalkulatorem średniej ważonej.
Kostki k4, k8, k10, k12 i k20
Kostka nie musi być sześcienna. Poniższa tabela zbiera komplet używany w grach fabularnych razem z bryłą, na której każda z nich się opiera.
| Kostka | Zakres wyniku | Średnia | Bryła geometryczna | Typowe zastosowanie |
|---|---|---|---|---|
| k4 | 1 do 4 | 2,5 | czworościan foremny | drobne obrażenia w grach fabularnych |
| k6 | 1 do 6 | 3,5 | sześcian | Chińczyk, Monopoly, gry w kości, planszówki |
| k8 | 1 do 8 | 4,5 | ośmiościan foremny | obrażenia broni w grach fabularnych |
| k10 | 1 do 10 | 5,5 | trapezoedr pięciokątny | wynik procentowy w parze z drugą k10 |
| k12 | 1 do 12 | 6,5 | dwunastościan foremny | obrażenia broni dwuręcznej |
| k20 | 1 do 20 | 10,5 | dwudziestościan foremny | test powodzenia akcji, podstawowa kostka systemu |
Średnia w tabeli to wartość oczekiwana pojedynczego rzutu, czyli (liczba ścianek + 1) podzielona przez 2. Dla zestawu kilku kostek mnoży się ją przez ich liczbę: trzy k6 mają wartość oczekiwaną 10,5, a dwie k20 dają 21.
Kostka k10 jest w tym zestawieniu wyjątkiem i warto wiedzieć dlaczego. Pozostałe opierają się na bryłach platońskich, czyli wielościanach foremnych, których jest tylko pięć. Dziesięciu ścianek żadna z nich nie ma, więc k10 zbudowano na trapezoedrze pięciokątnym: bryle o dziesięciu ściankach w kształcie latawca, która nie jest foremna, ale nadal jest uczciwa. Dlaczego to wystarcza, tłumaczy sekcja o uczciwej kostce niżej.
Dwie kostki k10 rzucone razem dają wynik procentowy od 1 do 100: jedna czyta się jako dziesiątki, druga jako jedności. W tym narzędziu ustawisz to, wybierając dwie kostki k10, choć do losowania liczby z dowolnego zakresu prościej użyć generatora liczb losowych.
Czym kostka fizyczna różni się od generatora
Kostka fizyczna jest lekko niesprawiedliwa i wiadomo to od ponad stu lat. Wirtualna nie jest, bo nie ma bryły, środka ciężkości ani tolerancji wykonania.
W lutym 1894 roku biolog Walter Frank Raphael Weldon wysłał Francisowi Galtonowi wyniki 26 306 rzutów dwunastoma kostkami, czyli 315 672 pojedynczych wyników. Weldon liczył jako sukces piątkę albo szóstkę i doliczył się częstości 0,3377 zamiast oczekiwanej jednej trzeciej, czyli 0,3333. Karl Pearson użył tych danych w 1900 roku w pracy wprowadzającej test zgodności chi kwadrat i wyjaśnił odchylenie wydrążonymi oczkami: skoro w ściance z sześcioma oczkami usunięto najwięcej materiału, jest ona lżejsza od przeciwległej jedynki i częściej ląduje do góry.
W 2009 roku Zacariah Labby powtórzył ten eksperyment maszynowo: zbudował urządzenie rzucające dwunastoma kostkami, fotografujące je i zliczające oczka z obrazu, po czym wykonał dokładnie tyle samo rzutów co Weldon. Wynik zbiorczy wypadł blisko uczciwego, bo częstość piątki albo szóstki wyniosła 0,3343. Dopiero rozbicie na poszczególne ścianki pokazało, co jest nie tak.
Kostki Labby'ego były obciążone, ale nie tak, jak zakładał Pearson. Najczęściej wypadały ścianki 1 i 6, z prawdopodobieństwem 0,1686 i 0,1688 wobec uczciwego 0,1667, a hipoteza liniowego trendu wynikającego z wagi oczek została odrzucona. Pomiar mikrometrem wyjaśnił przyczynę: oś między ścianką 1 a ścianką 6 była u wszystkich dwunastu kostek krótsza od dwóch pozostałych osi o około 0,2 procenta. Kostka nie była idealnym sześcianem, tylko odrobinę spłaszczonym prostopadłościanem, a spłaszczenie powiększa ścianki leżące na krótszej osi.
Stąd bierze się praktyczny wniosek. Tania plastikowa kostka z wydrążonymi oczkami odchyla się od uczciwości o ułamek procenta, co przy jednej partii Monopoly nie ma żadnego znaczenia, a przy dziesiątkach tysięcy rzutów daje się zmierzyć. Kostki kasynowe rozwiązują ten problem inaczej: mają oczka wypełnione tworzywem o tej samej gęstości co reszta bryły, ścianki równo z powierzchnią i ostre krawędzie zamiast zaokrąglonych. Generator w przeglądarce nie potrzebuje żadnego z tych zabiegów, bo nie ma czego wyważać.
Co znaczy uczciwa kostka
Uczciwa kostka to bryła, w której każdą ściankę da się przeprowadzić na każdą inną obrotem albo odbiciem przekształcającym całą bryłę w siebie. Tę definicję sformułowali w 1989 roku Persi Diaconis i Joseph Keller w pracy Fair Dice i to ona tłumaczy, dlaczego kostki do gier wyglądają tak, a nie inaczej.
Warunek nosi nazwę przechodniości na ściankach, a bryły, które go spełniają, to izoedry. Nie trzeba przy tym żadnych obliczeń fizycznych: jeśli symetria bryły traktuje wszystkie ścianki identycznie, to żadna z nich nie może wypadać częściej, bo nic jej od pozostałych nie odróżnia. Rzucanie jest wtedy uczciwe niezależnie od tego, jak silnie i pod jakim kątem kostka poleciała.
Bryły platońskie spełniają ten warunek i dlatego dają kostki k4, k6, k8, k12 i k20. Nie są jednak jedyne. Wypukłych izoedrów jest 30 rodzajów, w tym dwie nieskończone rodziny: dwuostrosłupy i trapezoedry. Właśnie z drugiej z nich pochodzi k10, czyli trapezoedr pięciokątny, jedyna kostka spoza brył platońskich powszechnie używana w grach.
Warunek symetrii wyjaśnia też, czego kostką zrobić się nie da. Wśród 30 rodzajów izoedrów nie ma bryły o siedmiu ściankach, więc kostki k7 nie da się uczynić uczciwą samą symetrią. Sprzedawane k7 to zwykle graniastosłupy pięciokątne, czyli pięć ścianek bocznych plus dwie podstawy, a ich uczciwość opiera się na argumencie z ciągłości: proporcje bryły dobiera się tak, żeby wszystkie siedem ścianek wypadało równie często. Generator w przeglądarce nie ma tego ograniczenia, bo liczba ścianek jest tu zwykłą liczbą, a nie bryłą, którą trzeba zbudować.
Czego nie zrobi kostka w wynikach wyszukiwania
Wyszukiwarka pokazuje własny widget rzutu kostką, który rzuca jedną kostką sześcienną. Poniższe rzeczy trzeba zrobić gdzie indziej i po to istnieje ta strona.
- Kilka kostek naraz. Do dziesięciu kostek w jednym rzucie, z oczkami każdej z nich osobno i z sumą.
- Ścianki inne niż sześć. Pełny komplet k4, k8, k10, k12 i k20, czyli wszystko, czego wymagają gry fabularne.
- Seria rzutów w jednym kliknięciu. Dziesięć, sto albo tysiąc rzutów naraz, zamiast klikania tysiąc razy pod rząd.
- Rozkład wyników. Histogram sum z bieżącej serii zestawiony z tym, ile razy każda suma powinna wypaść w teorii.
- Średnia wobec wartości oczekiwanej. Liczba, która pokazuje, jak daleko seria odbiegła od tego, czego można się było spodziewać.
- Najdłuższa passa. Widok, ile razy z rzędu wypadła ta sama suma, razem z informacją, czy taka passa mieści się w normie.
- Licznik sesji i kopiowanie wyniku. Suma wszystkich rzutów od otwarcia strony i wynik do protokołu jednym kliknięciem.
Do jednego rzutu na szybko widget wystarcza i nie ma sensu udawać, że jest inaczej. Różnica zaczyna się przy drugiej kostce.
Skąd bierze się wynik rzutu
Oczka wybiera funkcja crypto.getRandomValues, czyli kryptograficznie bezpieczny generator wbudowany w przeglądarkę. Specyfikacja Web Cryptography API wymaga, żeby zasilała go entropia systemu operacyjnego, więc znajomość dowolnie długiej serii wcześniejszych rzutów nie pozwala policzyć następnego.
Nie używamy funkcji Math.random, choć do rzutu kostką w grze planszowej by wystarczyła. Math.random to zwykły generator pseudolosowy z wewnętrznym stanem, który w części implementacji da się odtworzyć z obserwowanych wyników. Przy losowaniu nagrody albo rozstrzyganiu sporu różnica przestaje być teoretyczna.
Jest jeszcze szczegół, o którym większość generatorów kostki nie wspomina. Surowa wartość z generatora jest liczbą 32-bitową, a liczba 32-bitowa nie dzieli się bez reszty ani przez 6, ani przez 10, ani przez 20. Naiwne wzięcie reszty z dzielenia daje wtedy obciążenie modulo: pierwsze ścianki wypadają odrobinę częściej niż ostatnie. Narzędzie odrzuca wartości z niepełnego ostatniego bloku i losuje ponownie, więc dwudziestka wypada dokładnie tak samo często jak jedynka. Poprawka zmienia wynik rzędu jednej milionowej promila, ale kosztuje jedną pętlę i zdejmuje temat z dyskusji o uczciwości.
Wynik nie opuszcza Twojej przeglądarki. Rzut wykonuje kod strony na Twoim urządzeniu, więc ani wylosowane oczka, ani licznik sesji, ani historia nie trafiają na serwer, do logów ani do analityki. Historia i licznik żyją w pamięci otwartej karty: odświeżenie strony kasuje je bezpowrotnie, bo nic tu nie jest zapisywane w plikach cookie ani w pamięci lokalnej przeglądarki.
Przycisk kopiowania linku przekazuje ustawienia rzutu, czyli liczbę kostek, liczbę ścianek i liczbę rzutów. Nie przekazuje wyniku i nie może tego robić: rezultat odtwarzalny z adresu przestałby być losowy. Osoba, która otworzy taki link, dostanie te same ustawienia i własny, nowy rzut. Gdy potrzebujesz rozstrzygnięcia między dwiema możliwościami, a nie liczby, prościej sięgnąć po rzut monetą.
Najczęstsze pytania
- Jaka jest szansa na wyrzucenie szóstki?
- Szansa wynosi jeden do sześciu, czyli 16,67 procent, i jest taka sama dla każdej ścianki uczciwej kostki. Dwie szóstki pod rząd to już jeden przypadek na 36, czyli 2,78 procent. Sześć rzutów wcale nie gwarantuje szóstki: prawdopodobieństwo, że w takiej serii nie wypadnie ani jedna, wynosi 33,49 procent, czyli zdarza się to mniej więcej co trzecią próbę.
- Dlaczego suma 7 wypada najczęściej przy dwóch kostkach?
- Siódemka ma najwięcej układów oczek. Dwie kostki sześcienne dają 36 możliwych kombinacji, a sumę 7 tworzy sześć z nich: 1 i 6, 2 i 5, 3 i 4 oraz te same trzy pary w odwrotnej kolejności. Sumę 2 daje tylko jedna kombinacja, dwie jedynki, więc siódemka wypada dokładnie sześć razy częściej niż dwójka.
- Czy wirtualna kostka jest uczciwa?
- Tak, i jest uczciwsza od kostki fizycznej. Oczka wybiera kryptograficzny generator przeglądarki, a narzędzie odrzuca wartości z niepełnego bloku, więc każda ścianka ma równe szanse co do jednej możliwości. Plastikowa kostka takiej gwarancji nie daje: automatyczny pomiar z 2009 roku wykazał, że oś między ścianką 1 a ścianką 6 bywa krótsza od pozostałych o około 0,2 procenta.
- Jak rzucić kostką k20 albo inną kostką RPG?
- Wybierz liczbę ścianek przełącznikiem nad przyciskiem rzutu. Narzędzie obsługuje pełny komplet do gier fabularnych: k4, k6, k8, k10, k12 i k20. Możesz też rzucić kilkoma kostkami naraz, na przykład trzema k6 do obrażeń albo dwiema k10 do wyniku procentowego. Panel poda oczka każdej kostki osobno oraz ich sumę.
- Czym ten rzut kostką różni się od widgetu w wynikach wyszukiwania?
- Widget rzuca jedną kostką sześcienną i na tym kończy. To narzędzie rzuca do dziesięciu kostek naraz, obsługuje ścianki od k4 do k20, sumuje oczka, liczy serie do 1000 rzutów z rozkładem sum i najdłuższą passą, pamięta licznik całej sesji oraz kopiuje wynik jednym kliknięciem. Pisze też wprost, skąd bierze losowość.
Źródła
- Z. Labby (2009), Weldon's Dice, Automated, CHANCE 22(4), s. 6–13 · automatyczne powtórzenie eksperymentu Weldona z 1894 roku: 26 306 rzutów 12 kostkami, pomiar osi bryły i rozkład poszczególnych ścianek
- P. Diaconis, J. B. Keller (1989), Fair Dice, The American Mathematical Monthly 96(4), s. 337–339 · definicja kostki uczciwej z symetrii: każdą ściankę da się przeprowadzić na każdą inną symetrią bryły
- MDN Web Docs: Crypto.getRandomValues() · dokumentacja funkcji, z której narzędzie bierze losowość
- W3C: Web Cryptography API (Recommendation) · wymóg używania przez przeglądarkę kryptograficznie silnego generatora