AWK, 120 119118 bytes
{while(i++<NF)r[i]=int(rand()*NF)+1;for(;l++<NF;j=k=0){while(k++<NF)if(r[k]==l){printf"%*c",k-j,$k;j=k}printfprint RSFS}}
I've included the 5 bytes in the score for the necessary -F ''
switch, but I had to use the BEGIN{FS=""}
directive for the TIO link since it doesn't process the command-line switch properly.