Randomness and Recurrence in Dynamical Systems discusses a wide range of topics such as irrational numbers, dynamical systems, normal numbers, ergodic theory, Benford's law, and (of course) infinitely many monkeys typing out Hamlet, all expertly woven together into a cohesive whole.
The first 40 or so pages of the book, including the table of contents, can be previewed on Google Books.
The book is very well written and the author clearly motivates all definitions and theorems. Excellent illustrations throughout help cement the reader's understanding of the material and proofs are given in full detail. Great attention was paid in the writing and editing of this book, as I have not come across any typos.
No measure theory is required, although comfort with analysis at, say, the level of baby Rudin is. In fact, much of this book can be viewed as a tasty appetizer to measure theory. In my opinion, the ideal reader for this book would be an upper level undergraduate looking to do some independent study before doing a course in measure theory. Working through this book will solidify their understanding of what they've already learned and prime them for what is to come, both in terms of the content, as well as many interesting applications of measure theory. A more advanced reader will find much of the material easy going, but still very interesting and well presented.
At the end of each chapter there are good, interesting exercises, followed by more project-like investigations and then explanatory notes that put the material into context.
All in all, this is a very nice book.
Peter Rabinovitch is a Systems Architect at Research in Motion, and a PhD student in probability. He is now a fan of the music of Steve Reich.