non sequitur
TRANSCRIPT
![Page 1: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/1.jpg)
Non SequiturAn exploration of Python's random module
Jair Trejo, EuroPython 2014
![Page 2: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/2.jpg)
Jair TrejoDirector of Operations at Vinco Orbis
![Page 3: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/3.jpg)
![Page 4: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/4.jpg)
![Page 5: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/5.jpg)
![Page 6: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/6.jpg)
![Page 7: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/7.jpg)
![Page 8: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/8.jpg)
Random sample
![Page 9: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/9.jpg)
Simulation
![Page 10: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/10.jpg)
552433147702632768969101985048
552433147702632768969101985048
552433147702632768969101985048
552433147702632768969101985048
552433147702632768969101985048
552433147702632768969101985048
552433147702632768969101985048
552433147702632768969101985048
552433147702632768969101985048
552433147702632768969101985048
![Page 11: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/11.jpg)
1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
![Page 12: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/12.jpg)
4.77 Counter({ '9': 14, '2': 12, '8': 12, '3': 11, '4': 10, '6': 9, '1': 8, '0': 8, '5': 8, '7': 8})
![Page 13: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/13.jpg)
![Page 14: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/14.jpg)
![Page 15: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/15.jpg)
![Page 16: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/16.jpg)
1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
![Page 17: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/17.jpg)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986
280348253421170679
![Page 18: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/18.jpg)
![Page 19: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/19.jpg)
![Page 20: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/20.jpg)
![Page 21: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/21.jpg)
![Page 22: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/22.jpg)
![Page 23: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/23.jpg)
7638, 3390, 4921, 2162, 6742, 4545, 6570, 1649, 7192, 7248, 5335, 4622, 3628, 1623, 6341, 2082, 3347, 2024, 965, 3122, 7468, 7710, 4441, 7224, 1861, 4633, 4646,
5853, 2576, 6357, 4114, 9249, 5440, 5936, 2360, 5696, 4444, 7491, 1150, 3225, 4006, 480, 3040, 2416, 8370, 569,
2376, 6453, 6412, 1137, 2927, 5673, 1829, 3452, 9163, 9605, 2560, 5536, 6472, 8867, 6236, 8876, 7833, 3558, 6593, 4676, 8649, 8052, 8347, 6724, 2121, 4986, 8601, 9772, 4919, 1965, 8612, 1665, 7722, 6292, 5892, 7156, 2083, 3388, 4785, 8962, 3174, 742, 5056, 5631, 7081, 1405, 9740, 8676, 2729, 4474, 166, 2755, 5900, 8100
![Page 24: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/24.jpg)
![Page 25: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/25.jpg)
![Page 26: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/26.jpg)
7, 23, 41, 59, 89
![Page 27: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/27.jpg)
![Page 28: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/28.jpg)
![Page 29: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/29.jpg)
![Page 30: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/30.jpg)
![Page 31: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/31.jpg)
![Page 32: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/32.jpg)
![Page 33: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/33.jpg)
![Page 34: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/34.jpg)
![Page 35: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/35.jpg)
![Page 36: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/36.jpg)
Python’s random module source code
![Page 37: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/37.jpg)
![Page 38: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/38.jpg)
![Page 39: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/39.jpg)
import random
![Page 40: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/40.jpg)
r = random.Random(seed) r.random()
![Page 41: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/41.jpg)
r.randrange(max) r.random() * max
![Page 42: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/42.jpg)
r.randrange(start, stop)
start + r.randrange(stop - start)
![Page 43: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/43.jpg)
r.randrange(start, stop, step)
![Page 44: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/44.jpg)
r.random() r.randrange(start, stop, step) r.randint(a, b)
![Page 45: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/45.jpg)
r.choice(a_sequence)
![Page 46: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/46.jpg)
r.sample(population, how_many)
![Page 47: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/47.jpg)
r.shuffle(a_list)
![Page 48: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/48.jpg)
sorted(a_list, key=lambda e: r.random())
![Page 49: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/49.jpg)
![Page 50: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/50.jpg)
![Page 51: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/51.jpg)
![Page 52: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/52.jpg)
![Page 53: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/53.jpg)
![Page 54: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/54.jpg)
r.triangular r.gammavariate r.betavariate r.paretovariate r.weibullvariate
![Page 55: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/55.jpg)
![Page 56: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/56.jpg)
import random !
random.random()
![Page 57: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/57.jpg)
random.WichmannHill random.SystemRandom randomdotorg.RandomDotOrg
![Page 58: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/58.jpg)
Conclusions• The definition of randomness is more a philosophical than a mathematical
problem.
• But we can use mathematical definitions that are useful for our purposes.
• If we need sequences that are deterministic, but behave as if random, we can use pseudo-random number generation.
• If we need numbers that are completely unpredictable, we need sources of entropy like input devices, noise measurements or other external sources.
• For most of our random number needs, python provides more than adequate capabilities.
![Page 59: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/59.jpg)
References
![Page 60: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/60.jpg)
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
By Nick Montfort, Patsy Baudoin, John Bell, Ian Bogost, Jeremy Douglass, Mark C. Marino, Michael Mateas,
Casey Reas, Mark Sample and Noah Vawter
![Page 61: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/61.jpg)
The art of computer programming, Volume 2 Seminumerical Algorithms
![Page 62: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/62.jpg)
On randomness in cryptography!http://blog.cloudflare.com/why-randomness-matters
On random number generators testing!http://www.fourmilab.ch/hotbits/statistical_testing/stattest.html
On the possible NSA backdoor into RSA’s random number generator!http://arstechnica.com/security/2014/01/how-the-nsa-may-have-put-a-backdoor-in-rsas-cryptography-a-technical-primer/
![Page 63: Non sequitur](https://reader031.vdocuments.net/reader031/viewer/2022020410/58f0f80c1a28abdf5a8b4697/html5/thumbnails/63.jpg)
Thank you!