Changes

Jump to: navigation, search

Pseudorandom Number Generator

29,104 bytes added, 20:49, 13 May 2018
Created page with "'''Home * Programming * Algorithms * Pseudorandom Number Generator''' FILE:Pompeii - Osteria della Via di Mercurio - Dice Players.jpg|border|right|thu..."
'''[[Main Page|Home]] * [[Programming]] * [[Algorithms]] * Pseudorandom Number Generator'''

[[FILE:Pompeii - Osteria della Via di Mercurio - Dice Players.jpg|border|right|thumb|Dice players <ref>[https://commons.wikimedia.org/wiki/File:Pompeii_-_Osteria_della_Via_di_Mercurio_-_Dice_Players.jpg Dice players] - [https://en.wikipedia.org/wiki/Ancient_Rome Roman] [https://en.wikipedia.org/wiki/Fresco fresco] from the [http://www.pompeiiinpictures.com/pompeiiinpictures/r6/6%2010%2001.htm Osteria della Via di Mercurio] ([http://www.pompeiiinpictures.com/pompeiiinpictures/r6/6%2010%2001%20p2.htm VI 10,1.19, room b]) in [https://en.wikipedia.org/wiki/Pompeii Pompeii], Source: [https://en.wikipedia.org/wiki/Filippo_Coarelli Filippo Coarelli] (ed.) ('''2002'''). ''[https://www.zvab.com/buch-suchen/titel/pompeji/autor/coarelli/ Pompeji]''. [https://en.wikipedia.org/wiki/Hirmer_Verlag Hirmer Verlag], [https://en.wikipedia.org/wiki/Munich Munich], ISBN: 3-7774-9530-1, p. 146, [https://en.wikipedia.org/wiki/Wikimedia_Commons Wikimedia Commons], [https://en.wikipedia.org/wiki/History_of_randomness History of randomness from Wikipedia]</ref> ]]

'''Pseudorandom Number Generator''' (PRNG),<br/>
an algorithmic [https://en.wikipedia.org/wiki/Gambling gambling] device for generating [https://en.wikipedia.org/wiki/Pseudorandomness pseudorandom] [https://en.wikipedia.org/wiki/Pseudorandom_number_generator numbers], a [https://en.wikipedia.org/wiki/Deterministic_system deterministic] sequence of numbers which appear to be [https://en.wikipedia.org/wiki/Randomness random] with the property of reproducibility. They are useful in [https://en.wikipedia.org/wiki/Simulation simulation], [https://en.wikipedia.org/wiki/Sampling sampling], [https://en.wikipedia.org/wiki/Computer_programming computer programming], [https://en.wikipedia.org/wiki/Decision-making decision making], [https://en.wikipedia.org/wiki/Cryptography cryptography], [https://en.wikipedia.org/wiki/Aesthetics aesthetics] and [https://en.wikipedia.org/wiki/Recreation recreation] <ref>[[Donald Knuth]] ('''1997'''). ''[http://www-cs-faculty.stanford.edu/~knuth/taocp.html The Art of Computer Programming (TAOCP)] - [http://www.informit.com/store/art-of-computer-programming-volume-2-seminumerical-9780201896848 Volume 2 - Seminumerical Algorithms]''. [http://www.informit.com/articles/article.aspx?p=2221790 Chapter 3 – Random numbers]</ref> - in computer chess, beside randomization of game playing, primarily used to generate keys for [[Zobrist Hashing|Zobrist hashing]].

Games of chance, such as [[Backgammon]] and [[EinStein würfelt nicht!]] require PRNGs for rolling a [https://en.wikipedia.org/wiki/Dice dice]. Chess and game playing programs use PRNGs to randomly choose one of several possible moves of a position from an [[Opening Book|opening book]], or use random fluctuations in [[Learning|learning]] and [[Automated Tuning|automated tuning]] tasks. Game playing programs performing a [[Monte-Carlo Tree Search]], use random playouts in their simulation phase. [[Don Beal]] and [[Martin C. Smith]] demonstrated that deeper [[Search with Random Leaf Values|search with random leaf values]] in chess yields to better play, with some interesting insights in [[Minimax|minimax search]] and implications for designing and testing [[Evaluation|evaluation]] terms <ref>[[Don Beal]], [[Martin C. Smith]] ('''1994'''). ''Random Evaluations in Chess''. [[Advances in Computer Chess 7]]</ref>.

=Methods=
PRNGs maintain a state variable, a bitwise superset of the random number, initialized by a [https://en.wikipedia.org/wiki/Random_seed random seed] - a constant for the same sequence each time, i.e. for Zobrist keys, otherwise, something like [https://en.wikipedia.org/wiki/System_time system time] to produce varying pseudo randoms. Each call of the PRNG routine performs certain operations or [[Bit-Twiddling|bit-twiddling]] on that state, leaving the next pseudo random number. For various applications more or less important features are [https://en.wikipedia.org/wiki/Randomness randomness], resolution, ([https://en.wikipedia.org/wiki/Equidistributed_sequence uniform]) [https://en.wikipedia.org/wiki/Probability_distribution distribution], and [https://en.wikipedia.org/wiki/Periodicity periodicity] - topic of various [https://en.wikipedia.org/wiki/Randomness_tests randomness tests] - and further performance, and [https://en.wikipedia.org/wiki/Software_portability portability].

A common method used in many library functions, such as [[C]]/[[Cpp|C++]] rand() is the [https://en.wikipedia.org/wiki/Linear_congruential_generator linear congruential generator] based on multiply, add, [https://en.wikipedia.org/wiki/Modulo_operation modulo] with integers, where some past implementations had serious shortcomings in the randomness, distribution and period of the sequence <ref>"In the past, some implementations of rand() have had serious shortcomings in the randomness, distribution and period of the sequence produced (in one well-known example, the low-order bit simply alternated between 1 and 0 between calls) rand() is not recommended for serious random-number generation needs, like cryptography. It is recommended to use C++11's random number generation facilities to replace rand()." [http://en.cppreference.com/w/cpp/numeric/random/rand rand - cppreference.com]</ref>. Due to such issues in rand() implementations, where lower bits are less random than higher bits, it is recommended not to use [https://en.wikipedia.org/wiki/Modulo_operation modulo] X to reduce the integer range from RAND_MAX to X, but division by (RAND_MAX div X) <ref>[https://www.stmintz.com/ccc/index.php?id=88293 Re: random book moves/ random generator] by [[Thorsten Greiner]], [[CCC]], January 13, 2000</ref> - or to use C++11's random number generation facilities to replace rand <ref>[http://en.cppreference.com/w/cpp/numeric/random Pseudo-random number generation - cppreference.com]</ref>.

[[Zobrist Hashing|Zobrist hashing]] with about 12*64 keys has less issues with randomness and period, but with distribution, and requires [https://en.wikipedia.org/wiki/Linear_independence linear independence] so that a small subset of all keys doesn't xor to zero. Despite selected hard-coded random constants used at compile time, many programs use an own PRNG based on [https://en.wikipedia.org/wiki/Recurrence_relation recurrence relation] in [https://en.wikipedia.org/wiki/GF%282%29 GF(2)] such as [https://en.wikipedia.org/wiki/Mersenne_twister Mersenne Twister] or [https://en.wikipedia.org/wiki/Xorshift Xorshift]. [[Stockfish]] (since 2.0) uses an implementation by [[Heinz van Saanen]] based on [[Bob Jenkins|Bob Jenkins']] [[Bob Jenkins#RKISS|RKISS]], a member of [[Mathematician#GMarsaglia|George Marsaglia's]] Xorshift familly. [[Amy]] by [[Thorsten Greiner]] <ref>amy-0.8.7.tar.gz /src/random.c</ref> uses an implementation of Agner Fog's RANROT B3 <ref>[http://www.agner.org/ Agner Fog] ('''2001'''). ''Chaotic Random Number Generators with Random Cycle Lengths''. [http://www.agner.org/random/theory/chaosran.pdf pdf]</ref>, also recommended by [[Stefan Meyer-Kahlen]] as used in [[Shredder]] <ref>[https://www.stmintz.com/ccc/index.php?id=88309 Re: random book moves/ random generator] by [[Stefan Meyer-Kahlen]], [[CCC]], January 13, 2000</ref>. [[Arasan]] 20.x switched to C++11 random number support using std::mt19937_64 <ref>[https://github.com/jdart1/arasan-chess/blob/master/src/movegen.h arasan-chess/movegen.h at master · jdart1/arasan-chess · GitHub]</ref> <ref>[http://www.cplusplus.com/reference/random/mt19937_64/ mt19937_64 - C++ Reference]</ref>

=Applications=
* [[Looking for Magics#FeedinginRandoms|Looking for Magics]]
* [[Genetic Programming]]
* [[Monte-Carlo Tree Search]]
* [[Opening Book]]
* [[Search with Random Leaf Values]]
* [[Simulated Annealing]]
* [[SPSA]]
* [[Zobrist Hashing]]

=See also=
* [[CPW-Engine_book]]
* [[De Bruijn Sequence Generator]]
* [[Bob Jenkins#RKISS|RKISS]] by [[Bob Jenkins]]
* [[Sequential Logic]]
* [[Trial and Error]]

=Selected Publications=
==1950 ...==
* [[Mathematician#DHLehmer|Derrick H. Lehmer]] ('''1951'''). ''[http://www.ams.org/mathscinet-getitem?mr=0044899 Mathematical methods in large-scale computing units]''. [https://archive.org/details/proceedings_of_a_second_symposium_on_large-scale_ Proceedings of a 2nd Symposium on Large Scale Digital Computing Machinery], 1949, [https://en.wikipedia.org/wiki/Harvard_University_Press Harvard University Press], pp. 141–146
* [https://en.wikipedia.org/wiki/RAND_Corporation RAND Corporation] ('''1955'''). ''[https://en.wikipedia.org/wiki/A_Million_Random_Digits_with_100,000_Normal_Deviates A Million Random Digits with 100,000 Normal Deviates]''. [https://www.rand.org/content/dam/rand/pubs/monograph_reports/MR1418/MR1418.deviates.pdf pdf], [https://www.rand.org/pubs/monograph_reports/MR1418/index2.html online]
==1960 ...==
* [[John von Neumann]] ('''1963'''). ''Various techniques used in connection with random digits''. von Neumann's Collected Works, Vol. 5, [https://en.wikipedia.org/wiki/Pergamon_Press Pergamon Press], [https://dornsifecms.usc.edu/assets/sites/520/docs/VonNeumann-ams12p36-38.pdf pdf]
* [[Mathematician#MDMacLaren|M. Donald MacLaren]], [[Mathematician#GMarsaglia|George Marsaglia]] ('''1965'''). ''[http://dl.acm.org/citation.cfm?id=321257 Uniform Random Number Generators]''. [[ACM#Journal|Journal of the ACM]], Vol. 12, No. 1
* [[Donald Knuth]] ('''1969'''). ''[https://en.wikipedia.org/wiki/The_Art_of_Computer_Programming The Art of Computer Programming (TAOCP)] - [https://en.wikipedia.org/wiki/The_Art_of_Computer_Programming#Volumes Volume 2 - Seminumerical Algorithms]''. Chapter 3 – Random numbers, 1st edition
==1970 ...==
* [[Mathematician#JHAhrens|Joachim H. Ahrens]], [[Mathematician#UDieter|Ulrich Dieter]], [[Mathematician#AGrube|Andreas Grube]] ('''1970'''). ''[http://link.springer.com/article/10.1007%2FBF02241740?LI=true Pseudo-random numbers]''. [https://en.wikipedia.org/wiki/Computing_(journal) Computing], Vol. 6, No. 1
* [[Mathematician#GMarsaglia|George Marsaglia]] ('''1972'''). ''The Structure of Linear Congruential Sequences''. in S. K. Zaremba (ed.) ''[http://www.sciencedirect.com/science/book/9780127759500 Applications of Number Theory to Numerical Analysis]''. [https://en.wikipedia.org/wiki/Academic_Press Academic Press]
* [[Mathematician#UDieter|Ulrich Dieter]], [[Mathematician#JHAhrens|Joachim H. Ahrens]] ('''1973'''). ''[http://link.springer.com/article/10.1007/BF02252903 A combinatorial method for the generation of normally distributed random numbers]''. [https://en.wikipedia.org/wiki/Computing_(journal) Computing], Vol. 11, No. 2
==1980 ...==
* [[Mathematician#SKirkpatrick|Scott Kirkpatrick]], [http://estoll.ch.marissa.hostorama.ch/ Erich P. Stoll] ('''1981'''). ''[https://www.researchgate.net/publication/200104855_A_Very_Fast_Shift-Register_Sequence_Random_Number_Generator A Very Fast Shift-Register Sequence Random Number Generator]''. [https://en.wikipedia.org/wiki/Journal_of_Computational_Physics Journal of Computational Physics], Vol. 40, No. 2
* [[Mathematician#GMarsaglia|George Marsaglia]] ('''1985'''). ''A Current View of Random Number Generators''. Proceedings, Computer Science and Statistics: 16th Symposium on the Interface, [https://en.wikipedia.org/wiki/Elsevier Elsevier]
* [[Mathematician#PLEcuyer|Pierre L'Ecuyer]] ('''1988'''). ''[http://dl.acm.org/citation.cfm?id=62969 Efficient and Portable combined random number generators]''. [[ACM#Communications|Communications of the ACM]], Vol. 31, No. 6
==1990 ...==
* [[Mathematician#PLEcuyer|Pierre L'Ecuyer]] ('''1990'''). ''[https://scholar.google.com/citations?view_op=view_citation&hl=en&user=gDxovowAAAAJ&cstart=280&sortby=pubdate&citation_for_view=gDxovowAAAAJ:2osOgNQ5qMEC Random numbers for simulation]''. [[ACM#Communications|Communications of the ACM]], Vol. 33, No. 10
* [[Mathematician#WHPress|William H. Press]], [[Mathematician#SATeukolsky|Saul A. Teukolsky]], [https://de.wikipedia.org/wiki/William_T._Vetterling William T. Vetterling], [https://en.wikipedia.org/wiki/Brian_P._Flannery Brian P. Flannery] ('''1992'''). ''[http://www.nrbook.com/a/bookcpdf.php Numerical Recipes in C: The Art of Scientific Computing, 2nd edition]''. Chapter 7. Random Numbers
* [[F. Warren Burton]], [http://www.cs.ou.edu/~rlpage/ Rex L. Page] ('''1992'''). ''Distributed Random Number Generation''. [https://en.wikipedia.org/wiki/Journal_of_Functional_Programming Journal of Functional Programming], Vol. 2, No. 2, [http://www.cs.ou.edu/~rlpage/burtonpagerngjfp.pdf pdf]
* [[Donald Knuth]] ('''1997'''). ''[http://www-cs-faculty.stanford.edu/~knuth/taocp.html The Art of Computer Programming (TAOCP)] - [http://www.informit.com/store/art-of-computer-programming-volume-2-seminumerical-9780201896848 Volume 2 - Seminumerical Algorithms]''. [http://www.informit.com/articles/article.aspx?p=2221790 Chapter 3 – Random numbers], 3rd edition
* [[Andrew Shapira]] ('''1997'''). ''Cycle parity random number generators, and a general random number library''. Ph.D. thesis, [https://en.wikipedia.org/wiki/Rensselaer_Polytechnic_Institute Rensselaer Polytechnic Institute], advisor [[Mathematician#Krishnamoorthy|Mukkai S. Krishnamoorthy]].
* [http://www.math.sci.hiroshima-u.ac.jp/~m-mat/eindex.html Makoto Matsumoto], [http://dblp.uni-trier.de/pers/hd/n/Nishimura:Takuji Takuji Nishimura] ('''1998'''). ''Mersenne twister: A 623-dimensionally equidistributed uniform pseudo-random number generator''. [[ACM#TOMACS|ACM Transactions on Modeling and Computer Simulation]], Vol. 8, No. 1, [http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/ARTICLES/mt.pdf pdf preprint]
* Anna Górecka, [[Maciej Szmit]] ('''1998'''). ''[http://maciej.szmit.info/documents/prgr/index.htm Programowe generatory liczb pseudolosowych. Znacie - to posłuchajcie].'' Software 11/1998 (Polish)
==2000 ...==
* [[Mathematician#KEntacher|Karl Entacher]] ('''2000'''). ''[http://random.mat.sbg.ac.at/results/karl/server/server.html A collection of classical pseudorandom number generators with linear structures - advanced version]''.
* [http://www.agner.org/ Agner Fog] ('''2001'''). ''Chaotic Random Number Generators with Random Cycle Lengths''. [http://www.agner.org/random/theory/chaosran.pdf pdf]
* [[Mathematician#GMarsaglia|George Marsaglia]] ('''2002'''). ''[http://digitalcommons.wayne.edu/jmasm/vol2/iss1/2/ Random number generators]''. [https://en.wikipedia.org/wiki/Journal_of_Modern_Applied_Statistical_Methods Journal of Modern Applied Statistical Methods], Vol. 2, No. 2.
* [[Mathematician#GMarsaglia|George Marsaglia]] ('''2003'''). ''[https://www.jstatsoft.org/article/view/v008i14 Xorshift RNGs]''. [https://en.wikipedia.org/wiki/Journal_of_Statistical_Software Journal of Statistical Software], Vol. 8, No. 14
* [[Mathematician#PLEcuyer|Pierre L'Ecuyer]] ('''2004'''). ''Random Number Generation''. [http://www.iro.umontreal.ca/~lecuyer/myftp/papers/handstat.pdf pdf]
* [[Mathematician#WHPress|William H. Press]], [[Mathematician#SATeukolsky|Saul A. Teukolsky]], [https://de.wikipedia.org/wiki/William_T._Vetterling William T. Vetterling], [https://en.wikipedia.org/wiki/Brian_P._Flannery Brian P. Flannery] ('''2007'''). ''[https://en.wikipedia.org/wiki/Numerical_Recipes Numerical Recipes. The Art of Scientific Computing], 3rd edition''. (C++ code)
==2010 ...==
* [[Jeff Rollason]] ('''2015'''). ''[http://www.aifactory.co.uk/newsletter/2014_02_completely_random.htm When Completely Random is Just not Random Enough]''. [[AI Factory]], February 2015

=Forum Posts=
==1982 ...==
* [http://quux.org:70/Archives/usenet-a-news/NET.chess/82.01.07_duke.1593_net.chess.txt compact representation of chess positions] by [[Tom Truscott]], net.chess, January 7, 1982
==1990 ...==
* [https://groups.google.com/d/msg/rec.games.chess/Qe_5lhAWTsc/79h9BQslCWIJ Re: Weakest Chess Program needed] by Kenneth S A Oksanen, [[Computer Chess Forums|rgc]], November 12, 1991
* [https://groups.google.com/d/msg/rec.games.chess/h9Q2wik_kTg/Jq7rYE0vqtoJ Hash tables - Clash!!! What happens next?] by [[Valavan Manohararajah]], [[Computer Chess Forums|rgc]], March 15, 1994
: [https://groups.google.com/d/msg/rec.games.chess/h9Q2wik_kTg/9zrP0flwuzAJ Re: Hash tables - Clash!!! What happens next?] by [[Jonathan Schaeffer]], March 17, 1994
* [https://groups.google.com/d/msg/rec.games.chess/xIvJfi92jMc/BQP231Z0V84J Re: Human VS computer] by [[Don Beal]], [[Computer Chess Forums|rgc]], July 11, 1994
==1995 ...==
* [https://groups.google.com/d/msg/rec.games.chess/NXEDz2iTbRc/k6uH2zBMmxMJ Primitive Chess Program] by David Ewart, [[Computer Chess Forums|rgc]], June 09, 1995
* [https://groups.google.com/d/msg/rec.games.chess.computer/AI3xadkLEIk/lqWaLrHtl7AJ random play] by [[Robert Hyatt]], [[Computer Chess Forums|rgcc]], November 25, 1996
* [https://groups.google.com/d/msg/rec.games.chess.computer/ul-HWewM5FQ/sXcqhGL06UQJ Randomness in move selection] by [[Robert Hyatt]], [[Computer Chess Forums|rgcc]], December 01, 1996
* [https://www.stmintz.com/ccc/index.php?id=28699 Re: Interesting random chess question - What is probability to win?] by [[Jari Huikari]], [[CCC]], October 03, 1998 » [[Nero]]
* [https://www.stmintz.com/ccc/index.php?id=29571 Random chess statistics, part two] by [[Jari Huikari]], [[CCC]], October 14, 1998
* [https://www.stmintz.com/ccc/index.php?id=29817 How to create a set of random integers for hashing?] by [[Ed Schroder|Ed Schröder]], [[CCC]], October 18, 1998
* [https://groups.google.com/d/msg/sci.math.num-analysis/6dlqhMI2Dvs/t5uVomP0VbUJ Random numbers for C: End, at last?] by [[Mathematician#GMarsaglia|George Marsaglia]], [https://groups.google.com/forum/?hl=en#!forum/sci.math.num-analysis sci.math.num-analysis], January 21, 1999
==2000 ...==
* [https://www.stmintz.com/ccc/index.php?id=88292 random book moves/ random generator] by [[Vincent Diepeveen]], [[CCC]], January 13, 2000
: [https://www.stmintz.com/ccc/index.php?id=88293 Re: random book moves/ random generator] by [[Thorsten Greiner]], [[CCC]], January 13, 2000
* [https://www.stmintz.com/ccc/index.php?id=150687 Simple Learning Technique and Random Play] by [[Miguel A. Ballicora]], [[CCC]], January 18, 2001 » [[Persistent Hash Table]]
* [https://groups.google.com/d/msg/rec.games.chess.computer/WH0DlnlGH7g/Izx2q-xoHTcJ Why Random Number Needed In HashFunction[piece][position]] by Cheok Yan Cheng, [[Computer Chess Forums|rgcc]], June 12, 2001
* [https://www.stmintz.com/ccc/index.php?id=175314 Random factor in static evaluation!] by Tiago Ribeiro, [[CCC]], June 15, 2001
* [https://www.stmintz.com/ccc/index.php?id=178041 Simulating the result of a single game by random numbers] by Christoph Fieberg, [[CCC]], July 03, 2001
* [https://www.stmintz.com/ccc/index.php?id=179091 Simulating the result of a single game by random numbers - Update!] by Christoph Fieberg, [[CCC]], July 10, 2001
* [https://www.stmintz.com/ccc/index.php?id=178939 Simulating the result of a single game by random numbers - Update!] by Christoph Fieberg, [[CCC]], August 02, 2001
* [https://www.stmintz.com/ccc/index.php?id=200366 About random numbers and hashing] by [[Severi Salminen]], [[CCC]], December 04, 2001
: [https://www.stmintz.com/ccc/index.php?id=200622 Re: About random numbers and hashing] by [[Sven Reichard]], [[CCC]], December 05, 2001
* [https://www.stmintz.com/ccc/index.php?id=245775 Random keys and hamming distance] by [[James Swafford]], [[CCC]], August 16, 2002
* [https://www.stmintz.com/ccc/index.php?id=292517 Random play] by [[Russell Reagan]], [[CCC]], April 08, 2003
* [https://www.stmintz.com/ccc/index.php?id=324223 64-Bit random numbers] by [[Martin Schreiber]], [[CCC]], October 28, 2003
* [https://www.stmintz.com/ccc/index.php?id=378514 A question about random numbers] by Antonio Senatore, [[CCC]], July 22, 2004
==2005 ...==
* [https://www.stmintz.com/ccc/index.php?id=452889 randomness of random number generators? somewhat OT] by David Dahlem, [[CCC]], October 01, 2005
* [https://groups.google.com/d/msg/rec.games.chess.computer/Ab9uA1-8Hlw/UjT_JXTiHuIJ Random number mobility scores] by Guest, [[Computer Chess Forums|rgcc]], September 20, 2008
* [http://www.talkchess.com/forum/viewtopic.php?t=26152 Zobrist key random numbers] by [[Robert Hyatt]], [[CCC]], January 21, 2009
* [http://compgroups.net/comp.lang.fortran/64-bit-kiss-rngs/601519 64-bit KISS RNGs] by [[Mathematician#GMarsaglia|George Marsaglia]], [http://compgroups.net/comp.lang.fortran/ comp.lang.fortran], February 28, 2009
==2010 ...==
* [http://www.talkchess.com/forum/viewtopic.php?t=35415 Transposition table random numbers] by Justin Madru, [[CCC]], July 13, 2010
* [http://www.talkchess.com/forum/viewtopic.php?t=37406 RKISS] by [[Gerd Isenberg]], [[CCC]], January 01, 2011
* [http://www.talkchess.com/forum/viewtopic.php?t=38313 RKISS copyright?] by Giorgio Medeot, [[CCC]], March 07, 2011
* [http://www.talkchess.com/forum/viewtopic.php?t=38760 Stockfish random generator (rkiss.h)] by [[Martin Sedlak]], [[CCC]], April 15, 2011 » [[Stockfish]], [[Bob Jenkins]]
* [http://www.talkchess.com/forum/viewtopic.php?t=43910 MT or KISS ?] by [[Dan Honeycutt]], [[CCC]], June 02, 2012 <ref>[https://en.wikipedia.org/wiki/Mersenne_twister Mersenne twister from Wikipedia]</ref>
* [http://www.talkchess.com/forum/viewtopic.php?t=49807 rkiss and other dependencies in syzygy] by [[Don Dailey]], [[CCC]], October 23, 2013
==2015 ...==
* [http://www.talkchess.com/forum/viewtopic.php?t=56328 Revised source for the random game generator] by [[Steven Edwards]], [[CCC]], May 12, 2015
* [http://www.talkchess.com/forum/viewtopic.php?t=56364 Random playout vs evaluation] by [[Robert Pope]], [[CCC]], May 15, 2015
* [http://www.talkchess.com/forum/viewtopic.php?t=60582 "random mover" chess programs] by [[Norbert Raimund Leisner]], [[CCC]], June 24, 2016
* [http://www.talkchess.com/forum/viewtopic.php?t=61315 Adding a random small number to the evaluation function] by [[Uri Blass]], [[CCC]], September 03, 2016
* [http://www.talkchess.com/forum/viewtopic.php?t=63803 random evaluation perturbation factor] by [[Stuart Cracraft]], [[CCC]], April 24, 2017

=External Links=
* [https://en.wikipedia.org/wiki/Pseudorandom_number_generator Pseudorandom number generator from Wikipedia]
* [https://en.wikipedia.org/wiki/Pseudo-random_number_sampling Pseudo-random number sampling from Wikipedia]
* [https://en.wikipedia.org/wiki/Pseudorandomness Pseudorandomness from Wikipedia]
* [https://en.wikipedia.org/wiki/Statistical_randomness Statistical randomness from Wikipedia]
* [https://en.wikipedia.org/wiki/Pseudo-random_number_sampling Pseudo-random number sampling from Wikipedia]
* [https://en.wikipedia.org/wiki/Random_seed Random seed from Wikipedia]
* [https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator Cryptographically secure pseudorandom number generator from Wikipedia]
==Randomness==
* [https://en.wikipedia.org/wiki/Randomness Randomness from Wikipedia]
* [https://en.wikipedia.org/wiki/History_of_randomness History of randomness from Wikipedia]
* [https://en.wikipedia.org/wiki/Random_number_generation Random number generation from Wikipedia]
* [https://en.wikipedia.org/wiki/Hardware_random_number_generator Hardware random number generator]
* [https://www.random.org/ RANDOM.ORG - True Random Number Service]
* [https://www.random.org/integers/ RANDOM.ORG - Integer Generator]
==Methods==
* [https://en.wikipedia.org/wiki/Linear_congruential_generator Linear congruential generator from Wikipedia]
: [https://en.wikipedia.org/wiki/Lehmer_random_number_generator Lehmer random number generator from Wikipedia]
: [http://www.firstpr.com.au/dsp/rand31/ Park-Miller-Carta Pseudo-Random Number Generators]
: [https://en.wikipedia.org/wiki/RANDU RANDU from Wikipedia]
* [https://en.wikipedia.org/wiki/Mersenne_twister Mersenne Twister from Wikipedia]
: [http://www.math.sci.hiroshima-u.ac.jp/%7Em-mat/MT/emt.html Mersenne Twister - Home Page]
* [https://en.wikipedia.org/wiki/Linear-feedback_shift_register Linear-feedback shift register from Wikipedia]
* [https://en.wikipedia.org/wiki/Xorshift Xorshift from Wikipedia]
* [http://www.burtleburtle.net/bob/rand/smallprng.html A small noncryptographic pseudorandom number generator] by [[Bob Jenkins]]
* [http://www.burtleburtle.net/bob/rand/isaacafa.html ISAAC, a fast cryptographic random number generator] by [[Bob Jenkins]]
* [http://www.agner.org/random/ Pseudo random number generators] by [http://www.agner.org/ Agner Fog]
* [http://random.mat.sbg.ac.at/generators/ Random Number Generators - the pLab project] by [[Mathematician#PJHellekalek|Peter Hellekalek]]
* [http://www.stat.tugraz.at/stadl/random.html Random Number Generation] by [[Mathematician#EStadlober|Ernst Stadlober]]
* [http://www.paulm.org/random.html Random Number Generators]
==Language Support==
===[[Basic]]===
* [https://en.wikibooks.org/wiki/BASIC_Programming/Random_Number_Generation BASIC Programming/Random Number Generation - Wikibooks]
* [https://msdn.microsoft.com/en-us/library/f7s023d2(v=vs.90).aspx Rnd Function (Visual Basic)]
* [http://www.atarimagazines.com/compute/issue90/The_Beginners_Page.php The Beginner's Page: The Random Function] » [[Atari 8-bit]]
* [https://www.c64-wiki.com/wiki/RND RND - C64-Wiki] » [[Commodore 64]]
===[[C]]===
* [https://msdn.microsoft.com/en-us/library/398ax69y.aspx rand - MSDN]
* [http://man7.org/linux/man-pages/man3/rand.3.html rand(3) - Linux manual page]
* [https://www.gnu.org/software/gsl/manual/html_node/Random-Number-Generation.html GNU Scientific Library – Reference Manual: Random Number Generation]
===[[Cpp|C++]]===
* [http://en.cppreference.com/w/cpp/numeric/random/rand std::rand - cppreference.com]
* [http://www.boost.org/doc/libs/1_64_0/doc/html/boost_random/reference.html Boost Random - Reference - 1.64.0]
* [http://en.cppreference.com/w/cpp/numeric/random Pseudo-random number generation - cppreference.com]
* [http://www.cplusplus.com/reference/random/mt19937_64/ mt19937_64 - C++ Reference]
* [https://www.johndcook.com/blog/cpp_TR1_random/ Random number generation using] [https://en.wikipedia.org/wiki/C%2B%2B_Technical_Report_1 C++ Technical Report 1] by [https://www.johndcook.com/blog/ John D. Cook] (2008)
===[[C sharp|C#]]===
* [https://msdn.microsoft.com/en-us/library/system.random(v=vs.110).aspx Random Class (System) - MSDN]
* [http://csharpindepth.com/Articles/Chapter12/Random.aspx C# in Depth: Random numbers]
* [https://www.codeproject.com/Articles/25172/Simple-Random-Number-Generation Simple Random Number Generation - CodeProject] by [https://www.johndcook.com/blog/ John D. Cook] (2008 - 2011)
===[[D-Proglanguage|D]]===
* [https://dlang.org/library/std/random.html Module std.random - D Programming Language]
* [https://dlang.org/phobos/std_random.html std.random - D Programming Language]
===[[Fortran]]===
* [https://gcc.gnu.org/onlinedocs/gfortran/RAND.html The GNU Fortran Compiler: RAND]
* [https://gcc.gnu.org/onlinedocs/gfortran/RANDOM_005fNUMBER.html The GNU Fortran Compiler: RANDOM_NUMBER]
===[[Go]]===
* [https://golang.org/pkg/math/rand/ rand - The Go Programming Language]
* [https://gobyexample.com/random-numbers Go by Example: Random Numbers]
===[[Java]]===
* [http://docs.oracle.com/javase/8/docs/api/java/util/Random.html Random (Java Platform SE 8 )]
* [http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadLocalRandom.html ThreadLocalRandom (Java Platform SE 8 )]
===[[Lisp]]===
* [https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node133.html Common Lisp - 12.9. Random Numbers]
* [https://jorgetavares.com/2009/09/02/exploring-pseudo-random-numbers-in-lisp/ Exploring pseudo-random numbers in Lisp] – [https://jorgetavares.com/ Jorge Tavares Notes]
===[[Pascal]]===
* [https://www.freepascal.org/docs-html/rtl/system/random.html Free Pascal - Random]
* [http://wiki.freepascal.org/Generating_Random_Numbers Generating Random Numbers - Free Pascal wiki]
* [http://wiki.freepascal.org/Delphi_compatible_LCG_Random Delphi compatible LCG Random - Free Pascal wiki]
* [http://wiki.freepascal.org/Marsaglia%27s_pseudo_random_number_generators Marsaglia's pseudo random number generators - Free Pascal wiki]
===[[Python]]===
* [https://docs.python.org/2/library/random.html 9.6. random — Generate pseudo-random numbers — Python 2.7.13 documentation]
* [https://docs.python.org/3/library/random.html 9.6. random — Generate pseudo-random numbers — Python 3.6.1 documentation]
==Tests==
* [https://en.wikipedia.org/wiki/Randomness_tests Randomness tests from Wikipedia]
* [https://en.wikipedia.org/wiki/Diehard_tests Diehard tests from Wikipedia]
* [https://en.wikipedia.org/wiki/Spectral_test Spectral test from Wikipedia]
* [https://en.wikipedia.org/wiki/TestU01 TestU01 from Wikipedia]
==Misc==
* [[Videos#VanderGraafGenerator|Van der Graaf Generator]] - Theme One (1972), [https://en.wikipedia.org/wiki/YouTube YouTube] Video
: {{#evu:https://www.youtube.com/watch?v=rGHat7IeNaA|alignment=left|valignment=top}}

=References=
<references />

'''[[Algorithms|Up one Level]]'''

Navigation menu