Mathematicians determined that this would work because while the chance of producing anything useful out of a random pile of letters is minuscule, it is not nonexistent. One gets a barn-megaparsec effect, which I'm naming after the totally insane unit of measurement. A barn is a ridiculously tiny measurement of area, used to measure the area of atomic collisions, and a megaparsec is an absurdly long measure of linear distance, thousands of light-years long. Multiplied together to form a measurement of volume, you get 2/3rds of a teaspoon. Practical for human use, but measured in the most ludicrous form possible. Same here, a tiny thing is multiplied by a huge thing to produce a moderate result.
The network working group even put out an April-Fools document describing how to do this on a computer: the infinite monkey protocol suite. Well, I can't put together an archiver, a literacy-recognizer, or an idea critic, but I can get you the monkey. In the C language, as I like it. Computer science readers, feel free to translate it into your own language.
#define CONTROLCHAR 32
#define ASCIIMAX 255 - CONTROLCHAR
char output; // The output character chosen by the monkey
srand(time(0)); // Randomize timer
srand(rand()); // Rerandomize. Definitely a random character now.
ouput=CONTROLCHAR + rand() % ASCIIMAX; // Produce an output character.
while(output > 126) // If it's "Delete this letter" or an other unprintable....
ouput=CONTROLCHAR + rand() % ASCIIMAX; // Reroll. Unprintable is not allowed.
return output; // When satisfied, return the letter to the main program.
char letter; // Expect a "letter."
while(input!=ctrl+c) // Okay, I forget how to really say "Until the user hits ctrl+c."
letter=monkeytype(); // Type a "letter."
printf(letter); // Print it out.
} // Repeat.
return 0; // All went well? Good.
Presumably the protocol maintainer would modify the main block to instead first connect to the storage-handler, then monkeytype at it, listening for signals asking it to stop.