Skąd bierze się losowość
Każdy znak pochodzi z crypto.getRandomValues, kryptograficznego generatora samej przeglądarki. Math.random jest szybki i zupełnie wystarcza do przetasowania listy; nie wystarcza do niczego, co ktoś mógłby próbować odgadnąć.
Losowanie odbywa się metodą odrzucania, a nie przez resztę z dzielenia, więc żaden znak ze zbioru nie jest choćby o ułamek bardziej prawdopodobny od innego.