それが最速の方法かどうかはわかりませんが、とにかく気まぐれです =) 気に入っていただければ幸いです
EDIT2 JSで完了!
var complexity = 0.3; // 0 to .99 if more then more letters in src string will be replaced by random ones
var randsArr = ("!@#$)**($#*)($#$()$()#$%^&*()%^$#$$#$^").split('').sort(function () { return 0.5 - Math.random()});
var srcArr = ("The brown fox jumps over the pink fence.").split('');
result = $.map(srcArr,function (el) { return (Math.random()>complexity) ? el : (randsArr.length) ? randsArr.shift() : el ; }).join('');
JSFiddleでテストする
誰かがそれを必要とする場合に備えて、古いphpバージョン:
$rands = "!@#$%^&*()";
$srcStr = "The brown fox jumps over the pink fence.";
$srcArr = str_split ($srcStr);
$randsArr = array_merge(str_split($rands),array_fill(strlen($rands),strlen($srcStr)-strlen($rands),false));
shuffle($randsArr);
echo implode(array_map(function($letter,$replacement) { return ($replacement!=false)?$replacement:$letter; },$srcArr,$randsArr));
編集私の悪い...私はそれがphp =(JSで書き直すのに数分かかると思っていました