Chaos is an ASCII ladder
Operation Flashpoint scripting language, 643 624 bytes
f={l=["""","!","#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"];t=_this;w=t select 0;r={l select random 92};v="";s=v;i=2;while{i<w}do{i=i+1;v=v+" "};p={i=1;while{i<t select 1}do{i=i+1;s=s+call r+v+call r+"\n"}};k=0;call p;while{k<t select 2}do{k=k+1;i=0;while{i<w}do{i=i+1;s=s+call r};s=s+"\n";call p};s}
Ridiculously long because there is no way to create the characters from the character codes.
Call with:
hint ([5, 3, 2] call f)
Output:
The ladder is extra chaotic because the font is not monospaced.
Unrolled:
f =
{
l = ["""","!","#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"];
t = _this;
w = t select 0;
r =
{
l select random 92
};
v = "";
s = v;
i = 2;
while {i < w} do
{
i = i + 1;
v = v + " "
};
p =
{
i = 1;
while {i < t select 1} do
{
i = i + 1;
s = s + call r + v + call r + "\n"
}
};
k = 0;
call p;
while {k < t select 2} do
{
k = k + 1;
i = 0;
while {i < w} do
{
i = i + 1;
s = s + call r
};
s = s + "\n";
call p
};
s
}
05AB1E, 29 bytes
Input taken in the order N, H, W
>*GNUžQ¦©.RIÍFð®.R«X²Öè}®.RJ,
Try it online!
Explanation
>*G # for N in [1 ... (N+1)*H)-1] do:
NU # store N in variable X
žQ # push a string of printable ascii
¦© # remove the first (space) and save a copy in register
.R # pick a random character
IÍF # W-2 times do:
ð # push a space
®.R # push a random ascii character
« # concatenate
X²Ö # push X % H == 0
è # index into the string of <space><random_char> with this
} # end inner loop
®.R # push a random ascii character
J, # join everything to a string and print
C, 95 bytes
f(w,h,n,i){++w;for(i=0;i++<w*~(h*~n);)putchar(i%w?~-i%w%(w-2)*((i/w+1)%h)?32:33+rand()%94:10);}