I disagree.
Just because the patterns are "random" (which is impossible, really) does not mean that eventaually every possible pattern would be produced.
Why would it?
Because of the nature of randomness and infinite time.
Given an infinite amount of time, if something does not happen then it is not possible. If there is ANY chance of it occurring, however remote, then it WILL happen.
e.g. if you have a coin where you think that the result is random, if it never landed on TAILS in an infinite amount of time then the result is NOT random. Period.
If it is truly random then as the number of instances tends to infinity, the outcomes approach the probability function of that randomness.
E.g. if you toss a coin an infinite number of times, the results will be 50:50 Heads/Tails.
If it doesn't then the assumption of the nature of the randomness needs revising.
So if you accept the assumption of randomness - e.g. a flat probability distribution across the 50 or so characters (letters + punctuation etc) - and there is a probability of hitting the keys in the right order to produce Shakespeare's complete works... then it WILL happen.
Doesn't that presume that the monkey can not repeat himself?
No. Repetition is permitted and expected, but if he repeats himself so as to disclude the possibility of other combinations then his typing is NOT random.
Hell, you can't even prove that a single word MUST be produced if the monkey is typing randomly.
Yes you can.
But you have to accept the assumption of randomness and understand what it means - i.e. that as the number of instances of an event tend to infinity (e.g. tapping of keyboard) then the outcome tends to the probability function of the randomness.
If we assume a flat probability function (all 100 characters of so, - letters, punctuation, including CAPS - having equal chance of being typed) then given an infinite amount of time each character would be hit 1% of the time. Not only that, but in every subdivision of the overall result you would expect the same distribution. The larger the sample, the closer to the probability function you get.
Also, if you take every-other-letter then this will have the same probability function... as will every-fifth-letter... every-100th-letter etc... because they are all infinite in length.
Certainly it is likely that he will type the word "blue" at some point, but not impossible that he will not.
On the flip side, it is certainly possible that he will type Moby Dick in it's entirety, but not likely at all.
It is impossible NOT to type "blue" given an infinite time.
It is also impossible NOT to type the the complete Moby Dick, given randomness and given infinite time.
If you think it is possible that, in the entire infinite time, the monkey only ever types out the letter "A", for example, then there is no randomness.
If there is a chance of occurring, given an infinite time and the same conditions then it WILL occur.
The only things that won't are those that are impossible due to those conditions, or become impossible due to changing conditions.
Therefore if a certain combination in an infinite random sequence is possible, then it will occur.
And if a certain combination in an infinite random sequence is impossible then the sequence is not as random as you thought - and the assumptions need revising.