The number of monkeys needed to bash on typewriters randomly before a specific text is likely to be generated in a given non-infinite time. For example, somone may want to know the CSM for a 90% probability of getting the source for Linux 10.0.0 in one week.

Method to determine CSM

(may need some work/correction)

Required variables:

  • S - Symbols in alphabet
  • M - size of message in symbols
  • t - average time between keypresses for each monkey
  • P - desired probability of generating message
  • T - desired completion time
  • Q - number of monkeys.


  1. Time to produce a message of correct length: tM.
  2. Probability such a message is correct: 1/SM
  3. Number of messages which should be produced to obtain the desired probability of a correct message: log(1-P)/log(1-(1/SM))
  4. Number of messages created by Q monkeys in time T: QT/tM
  5. Therefore number of required monkeys: Q = t × M × log(1-P)/(T × log(1-(1/SM))).

Assuming t = 0.2, M = 7 (largest message size where matlab generates answer!), S = 128, P = .9, T = 604800, Q works out as 3 billion. Which is large for such a short message.

Even reducing the number of symbols in the alphabet to 26 allows a message size of only 11 characters before Microsoft Excel gives up the ghost at about 38 billion monkeys.

These are of course numbers of monkeys. Conversion to a mass of monkeys (in newtons) is left as an exercise for the reader.

Log in or register to write something here or to contact authors.