Q:

randomly splice values into array

I have an array "A" of scrambled, randomly generated ASCII characters... and a message "M".  I want to insert the characters of message M into array A such that the order of M's characters are intact... but randomly distributed throughout array A.              
Original array: zH$@%@$#@$@^^#@(%*$@^&@!$^%&
Sample output: zH$@%@^t$#@$@^^h#@(%*$@^&@i!$^%&s, etc...
                    var randomChars = [];
                    for(var i=33;i<127;++i) {
                        var letter = document.createElement('span');
                        letter.innerHTML = String.fromCharCode(i);
                        randomChars.push(letter);
                    }

                    var message = "this is a message";
                    var rand = 0;
                    for (var i = 0; i < message.split("").length; i++) {    
                        rand = Math.floor((Math.random() * randomChars.length) + rand);
                        var letters = document.createElement('span');
                        letters.innerHTML = message.split("")[i];
                        letters.setAttribute("hidden","");
                        randomChars.splice(rand, 0, letters); 
                    }

Fiddle: https://jsfiddle.net/0ftm2srz/1/

A:

Use the previous random index as the minimum (non inclusive) of your next randomly generated index.  Start at zero. 
You could end up with some barely scrambled stuff, though. (! @#!$!@$#!@#this) But it's random. 
EDIT A better way would be to generate a message.length amount of unique random indices, sort them in ascending, and then insert characters from message at those spots in the scrambled array. 
http://jsbin.com/kuzepujabo/1/edit?js,console

