# Random number generation

May 15, 2015 — September 8, 2023

computers are awful

Monte Carlo

probabilistic algorithms

probability

pseudorandomness

Practical pseudo-RNG implementation. See also pseudorandomness for theories Monte Carlo for some applications, and for some background theory algorithmic statistics.

## 1 Uniform PRNGs

Generating uniformly distributed numbers on some interval, such as [0,1].

I regularly need to do this in languages that do not support…

- local
- seedable
- convenient

… PRNGs.

Javascript doesn’t support seeding. Supercollider does but insists on a per-thread RNG. MaxMSP is a miscellany of folly as usual.

## 2 Non-uniform variates

Say you have a uniform RNG but you need… Poisson? Gaussian? RNGs. Now what?

- Luc Devroye’s wonderful and unexpectedly deep Non-Uniform Random Variate Generation has analytic results
- Using NNs to do it? Reassure yourself this is possible (in principle) with the approximation results in Perekrestenko, Müller, and Bölcskei (2020); Perekrestenko, Eberhard, and Bölcskei (2021).

## 3 References

Devroye. 1986.

*Non-Uniform Random Variate Generation*.
———. 2006. “Non-Uniform Random Variate Generation.” In

*Handbooks in Operations Research and Management Volume 13 Simulation*.
Nisan, and Wigderson. 1994. “Hardness Vs Randomness.”

*Journal of Computer and System Sciences*.
Perekrestenko, Eberhard, and Bölcskei. 2021. “High-Dimensional Distribution Generation Through Deep Neural Networks.”

*Partial Differential Equations and Applications*.
Perekrestenko, Müller, and Bölcskei. 2020. “Constructive Universal High-Dimensional Distribution Generation Through Deep ReLU Networks.”