I'm a rank amateur in the area of pseudo-random number generation. I've recently found out that certain generators are better than others (e.g. mt19337 vs rand in C++) and learned what modulo bias is.
My Request
I'm looking for an introductory book on pseudo-random number generation. Does one exist?
My Requirements
The book must be understandable by someone with the following mathematics background:
- calculus
- discrete math (combinatorics, logic and proofs, set theory, mathematical induction, functions and relations, inclusion-exclusion, generating functions, recurrence relations, graphs/graph algorithms)
- linear algebra (vectors,matrix algebra, eigenvalues, transformations, diagonalization)
- introductory numerical analysis (computer arithmetic and errors, root-finding algorithms, computational techniques for matrices, numerical integration and differentiation)
I would prefer a book that does not require knowledge of any specific programming language:
- Would like algorithms to be presented in a pseudocode style (e.g. Introduction to Algorithms by Cormen)
- If the book isn't language neutral, I know the following languages: Python, Java, C++,C,Ruby.
I'm looking for a book that is accessible to a fairly inexperienced CS undergraduate:
- I have a basic understanding of stacks, linked lists, trees, heaps, hash tables and graphs
- I'm comfortable with basic programming concepts
The book should cover pseudorandom number generation at an introductory level:
- I'm not looking for a complete encyclopedic treatment on every research paper ever published in the area, but enough content to gain an entry level understanding in the area that you'd expect someone to learn in a first undergraduate course on pseudo-random number generation. For example if someone asked you for a book on introductory calculus you'd probably recommend a book that covers limits, differentiation, related rates, approximation of derivatives, L'Hopital's Rule and some basic continuous optimization. I'm looking for something similar in the area of PRNG. It's hard for me to specify exactly what I'm looking for because I know next to nothing about the area, but try and think of what you'd expect a complete amateur in the area to be able to reasonably learn in a semester.
What I've Tried
I'm looking at Chapter 3 of Donald Knuth's art of computer programming volume 2. The book seems quite old and uses some kind of assembly that I don't understand. If this is the authoritative reference, I'll find my way around these issues, but other books would be nice.