Czym jest to narzędzie?
Derangement to konkretne pojęcie matematyczne: permutacja (przetasowanie) zbioru, w której żaden element nie kończy na swojej pierwotnej pozycji. Zastosowane do wymiany prezentów oznacza to przetasowanie imion wszystkich uczestników w nowej kolejności tak, aby nikt nie był sparowany sam ze sobą — dokładnie takie ograniczenie jest potrzebne w uczciwym losowaniu na Mikołajki, i dokładnie tego NIE gwarantuje samo z siebie naiwne przetasowanie `array.sort(() => Math.random() - 0.5)`.
To narzędzie generuje derangement poprzez wielokrotne przetasowywanie listy za pomocą losowego algorytmu i sprawdzanie ograniczenia dotyczącego samoprzypisania, wykorzystując `crypto.getRandomValues()` jako źródło losowości zamiast `Math.random()` — to samo kryptograficznie bezpieczne źródło, którego używają na tej stronie [Generator Haseł](/password-generator/) i [Generator Losowych Liter](/random-letter-generator/).
Projekt z przyciskiem odkrywania rozwiązuje osobny, bardzo praktyczny problem związany z losowaniem imion w grupie: pokazanie wszystkich przypisań na ekranie naraz psuje niespodziankę dla wszystkich jednocześnie. Ukrycie wyniku każdej osoby za osobnym przyciskiem pozwala przekazywać jedno urządzenie z rąk do rąk (lub udostępniać ekran), tak aby każda osoba sprawdziła tylko swoje własne imię.
Dlaczego warto go używać?
- Na wigilijnej kolacji ktoś w ostatniej chwili proponuje Mikołajki — podajesz telefon dookoła stołu i w pół minuty każdy sprawdza swoje imię, bez karteczek i zamieszania.
- Na firmowym czacie pojawia się wiadomość "robimy losowanie na prezenty świąteczne" — udostępniasz ekran na wideorozmowie i każdy po kolei odkrywa swój wynik, bez pokazywania go reszcie zespołu.
- W zeszłym roku przy losowaniu na karteczkach ktoś wyciągnął własne imię i trzeba było powtarzać wszystko od nowa na oczach wszystkich — dzięki matematycznemu derangement to się już nie zdarzy.
- Kolega dołączył do grupy prezentowej w ostatniej chwili — kasujesz i generujesz losowanie od nowa w sekundę, bez przerabiania arkusza w Excelu czy wydarzenia w zewnętrznej aplikacji.
- Chcesz mieć pewność, że nikt nie zerknie na cudzy wynik — tutaj każde przypisanie zostaje ukryte, dopóki dana osoba sama nie kliknie swojego przycisku.
Jak używać
- Wpisz imię każdego uczestnika w osobnym wierszu — co najmniej 3 różne imiona.
- Kliknij "Losuj pary" — narzędzie oblicza prawidłowy derangement, tak aby nikt nie był sparowany sam ze sobą.
- Przy każdym uczestniku wyświetlane jest jego imię wraz z ukrytym wynikiem — przekaż urządzenie dalej lub udostępnij ekran i poproś każdą osobę, aby kliknęła swój przycisk "Dotknij, aby odkryć", by zobaczyć, komu daje prezent.
- Kliknij ponownie przycisk odkrywania, aby ukryć wynik po tym, jak ktoś go sprawdzi, przygotowując ekran dla kolejnej osoby.
Przykład
Wejście
Alice, Bob, Carol, DaveWynik
Alice → Carol, Bob → Dave, Carol → Bob, Dave → AliceKażde uruchomienie daje inny, prawidłowy derangement — to jest jeden przykładowy wynik. Zwróć uwagę, że nikt nie jest przypisany sam sobie, co jest jedynym twardym ograniczeniem, którego potrzebuje prawdziwe losowanie na Mikołajki, a którego zwykłe losowe przetasowanie nie gwarantuje.
Derangement kontra zwykłe losowe przetasowanie
Zwykłe przetasowanie i derangement wyglądają podobnie, ale tylko jedno z nich jest naprawdę bezpieczne przy wymianie prezentów.
| Metoda | Czy może przypisać kogoś samemu sobie? | Czy uczciwe jest losowanie na nowo, aż wynik "będzie wyglądał dobrze"? |
|---|---|---|
| Zwykłe losowe przetasowanie | Tak — realna możliwość, zwłaszcza w małych grupach | Nie — ręczne odrzucanie złych wyników wprowadza obciążenie w wyniku |
| Derangement (to narzędzie) | Nie — matematycznie wykluczone z samej konstrukcji | Nie dotyczy — każdy prawidłowy wynik już spełnia ograniczenie |
Powiązane narzędzia
Do innych losowań i generatorów wypróbuj te narzędzia.
→ Generator Nazw Fantasy · Generator Losowych Liczb · Generator Losowych Liter
Jak sprawnie przeprowadzić losowanie w grupie
Losowanie na jednym wspólnym ekranie sprawdza się do około dziesięciu osób; przy większej grupie lepiej podać telefon kilkukrotnie albo poprosić organizatora o głośne potwierdzenie tylko tego, że każdy sprawdził wynik, bez ujawniania imion.
Jeśli w grupie są osoby, które słabo się znają (np. biuro z nowymi pracownikami), wpisuj pełne imiona i nazwiska zamiast samych ksywek: derangement działa na dokładnych ciągach znaków, które wpiszesz, więc "Marek" i "Marek K." zostaną potraktowane jako dwie różne osoby, nawet jeśli chodzi o tego samego człowieka.
Warto pamiętać o drobnym ograniczeniu technicznym: przy zaledwie trzech uczestnikach istnieje bardzo mało możliwych derangementów, więc powtarzane losowania będą dawać podobne wzorce — przy grupach od 5 osób wzwyż różnorodność wyników rośnie znacznie szybciej.
Najczęściej zadawane pytania
Co się stanie, jeśli imię zostanie wpisane dwukrotnie?
Narzędzie wymaga, aby każde imię było unikalne, zanim przeprowadzi losowanie — jeśli wykryje zduplikowany wiersz, poprosi najpierw o poprawienie listy, ponieważ dwóch uczestników o identycznym imieniu uniemożliwiłoby rozróżnienie ich wyników.
Czy ktoś może wylosować własne imię?
Nie — narzędzie oblicza konkretnie derangement, przetasowanie o matematycznej własności, że żaden element (osoba) nie kończy przypisany do swojej pierwotnej pozycji. Ta gwarancja jest wymuszana przez algorytm, a nie pozostawiona przypadkowi, jak w przypadku zwykłego losowego przetasowania.
Jaka jest minimalna liczba osób potrzebna do losowania?
Trzy. Przy tylko dwóch osobach derangement jest niemożliwy bez tego, aby po prostu zawsze były przypisywane do siebie nawzajem, co nie jest sensownie losowe, więc narzędzie wymaga co najmniej trzech uczestników.
Jak zachować prywatność wyników, jeśli wszyscy patrzymy na ten sam ekran?
Wynik każdego uczestnika jest ukryty za jego własnym przyciskiem "Dotknij, aby odkryć", zamiast być pokazywany wszystkim naraz. Przekazuj urządzenie (lub udostępniaj ekran) kolejno każdej osobie, pozwól jej odkryć i zanotować tylko swój wiersz, a następnie kliknij ponownie, aby go ukryć, zanim przekażesz je kolejnej osobie.
Czy imiona lub wynik losowania są wysyłane na serwer?
Nie. Wszystko — odczytywanie imion, obliczanie derangement i wyświetlanie przycisków odkrywania — odbywa się całkowicie w Twojej przeglądarce. Nic nie jest przesyłane, a zamknięcie karty czyści wszystko, więc nigdzie nie pozostaje historia losowania, która mogłaby przypadkowo zepsuć niespodziankę.
Czy mogę wykluczyć niektóre pary, na przykład małżeństwo, które i tak daje sobie prezenty?
Narzędzie gwarantuje tylko podstawowe ograniczenie derangement (nikt nie jest przypisany sam sobie), nie dodatkowe reguły między konkretnymi osobami. Jeśli musisz wykluczyć też parę małżeńską, najprostsze rozwiązanie to wygenerować losowanie ponownie, aż ta para nie zostanie sparowana, albo przeprowadzić dwa osobne losowania z ręcznie wykluczonymi osobami.
Co się stanie, jeśli zamknę kartę w trakcie losowania, zanim wszyscy sprawdzą swoje imię?
Cały wynik zostaje utracony, bo nic nie jest zapisywane na serwerze ani w trwałej pamięci — trzeba będzie wygenerować losowanie od nowa. Przy większych grupach lepiej zostawić kartę otwartą, aż ostatnia osoba sprawdzi swoje przypisanie.
Czy wynik jest naprawdę losowy, czy niektóre kombinacje są bardziej prawdopodobne?
Algorytm powtarza przetasowanie, aż otrzyma prawidłowy derangement, odrzucając wyłącznie próby łamiące ograniczenie samoprzypisania — nie wprowadza żadnego innego obciążenia, więc spośród wszystkich możliwych derangementów każdy ma zasadniczo równe szanse na wylosowanie.
Czy mogę użyć tego narzędzia do przydzielania zadań lub dyżurów zamiast prezentów?
Tak — logika derangement działa w każdym scenariuszu, w którym chcesz przypisać każdej osobie kogoś innego niż ona sama, na przykład dyżury wzajemnej recenzji kodu między kolegami albo pary do zadania grupowego: wystarczy wpisać imiona i wylosować.