D’où vient le hasard
Chaque caractère vient de crypto.getRandomValues, le générateur cryptographique du navigateur lui-même. Math.random est rapide et tout à fait suffisant pour mélanger une liste ; il ne l’est pas pour quoi que ce soit que quelqu’un pourrait chercher à deviner.
Le tirage se fait par rejet plutôt que par repli sur un reste, si bien qu’aucun caractère de l’ensemble n’est une fraction plus probable qu’un autre.