Si le caractère "vraiment" aléatoire est important, je vous le déconseille. Voir ma modification ci-dessous.
Je voulais juste ajouter ma méthode préférée pour varier un peu ;)
Étant donné une chaîne de caractères :
var str = "My bologna has a first name, it's O S C A R.";
Mélangez en une seule ligne :
var shuffled = str.split('').sort(function(){return 0.5-Math.random()}).join('');
Sorties :
oa, a si'rSRn f gbomi. aylt AtCnhO ass eM
as'oh ngS li Ays.rC nRamsb Oo ait a ,eMtf
y alCOSf e gAointsorasmn bR Ms .' ta ih,a
EDIT : Comme @PleaseStand l'a souligné, cela ne répond pas du tout à la question de l'OP puisqu'il souffre du code "Microsoft's Browser Choice shuffle". Ce n'est pas un très bon randomiseur si votre chaîne doit être proche du hasard. Il est cependant génial pour "brouiller" rapidement vos chaînes de caractères, là où le "vrai" caractère aléatoire n'est pas pertinent.
L'article dont il donne le lien ci-dessous est très intéressant à lire, mais il explique un cas d'utilisation complètement différent, qui concerne les données statistiques. Personnellement, je ne vois pas de problème pratique à l'utilisation de cette fonction "aléatoire" sur une chaîne de caractères, mais en tant que codeur, il vous incombe de savoir quand no pour l'utiliser.
Je l'ai laissé ici pour tous les randomiseurs occasionnels.