- Probability theory
- Random numbers generation
- Distributions
- Sampling
- Shuffling
- Probabilistic data structures
- HyperLogLog
🎥
For cryptographically secure random number generation see Random numbers generation – Cryptographic algorithms and data structures.
🔗
- M.Marini. A class hierarchy for random number generation – C/C++ Users Journal 14 (1996)
⚓
- Xorshift – Wikipedia
- D.Lemire. Nearly divisionless random integer generation on various systems (2019)
⚓
std::uniform_int_distribution
– C++ referencestd::uniform_real_distribution
– C++ reference
⚓
std::normal_distribution
– C++ reference
This method is used in some implementations (e.g., in
libstdc++
andMSVC STL
) ofstd::normal_distribution
.
⚓
- Marsaglia polar method – Wikipedia
📖
- Sec. 3.4.2: Random sampling and shuffling – D.E.Knuth. The art of computer programming. Vol. 2: Seminumerical algorithms (1997)
- Col. 12: A sample problem – J.Bentley. Programming pearls (1999)
🔗
- Knuth’s algorithm S – Rosetta Code
- B.Rieck. A technique for selection sampling (sampling without replacement)
📄
- J.S.Vitter. An efficient algorithm for sequential random sampling – ACM Transactions on Mathematical Software 13, 58 (1987)
🔗
- Reservoir sampling – Wikipedia
🎥
- N.Ormrod. Fantastic algorithms and where to find them: Reservoir sampling – CppCon (2017)
🔗
- J.Atwood. The danger of naïveté (2007)
📖
- Sec. 3.4.2: Random sampling and shuffling – D.E.Knuth. The art of computer programming. Vol. 2: Seminumerical algorithms (1997)
🔗
- Fisher–Yates shuffle – Wikipedia
- Knuth shuffle – Rosetta Code
❔
- How does a skip list work? – Software Engineering
🎥
- Randomization: Skip lists – MIT OCW 6.046J/18.410J: Design and analysis of algorithms (2015)
📖
- Sec. 3.4: Skip lists – Drozdek A. Data structures and algorithms in C++ – Cengage Learning (2012)
📄
- W.Pugh. A skip list cookbook – Tech. Rep. UMIACS-TR-89-72.1 (1990)
🔗
- HyperLogLog – Wikipedia
🎥
- N.Ormrod. Fantastic algorithms and where to find them: HyperLogLog – CppCon (2017)