1 / 85

George Landon Chao Shen Chengdong Li

zaccheus
Download Presentation

George Landon Chao Shen Chengdong Li

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. George Landon Chao Shen Chengdong Li

    2. An Introduction George Landon

    3. Anyone who considers arithmetical methods of producing random digits is, of course, in a state of sin. John Von Neumann (1951)

    4. Introduction Definition History Types Tests for Randomness Uses

    5. Webster Defines Random Lacking a definite plan, purpose, or pattern A set where each of the elements has equal probability of occurrence

    6. Random Numbers A sequence in which each term is unpredictable D. H. Lehmer (1951) Examples between 1 and 100 29, 95, 11, 60, 22

    7. History according to Knuth In times of yore: Balls were drawn out of well stirred urns Dice were rolled Cards were dealt

    8. Organizing Random Numbers In 1927, L.H.C Tippet published a table of 40,000 random digits Mechanically Driven Special Machines were used to generate random numbers Kendall and Babington-Smith (1939) Generated a table of 100,000 random digits RAND Corporation (1955) Generated a table of 1,000,000 random digits

    9. Types Truly Random Pseudorandom Quasi-Random

    10. Truly Random Follows directly from definition of random. Each element has equal probability of being chosen from the set.

    11. Truly Random Examples Randomly emmited particles of radiation Geiger Counter Thermal noise from a resistor Intel’s Random Number Generator

    12. Pseudorandom A finite set of numbers that display qualities of random numbers Tests can show that there are patterns Subsequent numbers can be “guessed”

    13. Quasi-Random A series of numbers satisfying some mathematical random properties even though no random appearance is provided Good for Monte-Carlo methods Lower discrepancies offer better convergence

    14. Some Tests for Randomness Entropy Information density of the content of a sequence High density usually means random Arithmetic Mean Chi-square Test Provides a probability for the randomness for a sequence An example Pseudorandom number test http://www.fourmilab.ch/random/

    15. Practical Uses Simulation Computer Programming Decision Making Recreation

    16. Simulation Simulate natural phenomena on a computer Used for experiments in sterile conditions to make them more realistic Useful in all of the Applied Disciplines

    17. Computer Programming Test program effectiveness Test algorithm correctness Instead of all possible inputs use a few random numbers Microsoft has used this logic in testing their software

    18. Decision Making When an “unbiased” decision is needed Fixed decision can cause some algorithms to run more slowly Good way of choosing who goes first Sporting events

    19. Recreation Lottery Equal odds The KY Lottery uses Microsoft Excel’s RNG for “various second chance drawings“ Casinos Provides a chance for “luck”

    20. Recreation (cont) Video Games Random events keep games entertaining Q-bert

    21. References 3D Project Team. http://icfa3d.web.cern.ch/ICFA3D/3D/html2/node1.html ENT - A Pseudorandom Number Sequence Test Program. http://www.fourmilab.ch/random/ Knuth, D. The Art of Computer Programming – Volume 2. 1971 Random.org. http://www.random.org/essay.html

    22. Classification Chao Shen

    23. Classification of random numbers Truely random numbers Pseudo-random numbers Quasi-random numbers

    24. The advantages of true random numbers No periodicities. Not based on an algorithm. No predictability of random numbers based on knowledge of preceding sequences. Certainty that no hidden correlations are present.

    25. Example : ZRANDOM

    26. Pseudo-random number generator The pseudo-random number generator requires a number to start with that gets plugged in to the set of equations. After that it uses part of the result from the last time it was used as input to the next iteration. This starting number is called the seed.

    27. Methods for Random Number Generation Linear Congruential Generators Lagged Fibonnaci Generators Shift Register Generators Combined Generators

    28. Linear Congruential Generators (LCG) Xi=(aX i-1+c) Mod m where m is the modulus, a the multiplier, and c the additive constant or addend. The size of the modulus constrains the period, and it is usually chosen to be either prime or a power of 2. LCGs are not recommended to be used in computer simulations, nor any other purposes which require higher degrees of randomness.

    29. Example ( LCG) Let a=1,c=5,m=16 and x0=1. The sequence of pseudo-random integers generated by this algorithm is: 1,6,15,12,13,2,11,8,9,14,7,4,5,10,3,0,1,6,15,12,13,2,11,8,9,14,….

    30. Improvement of LCG Multiple recursive generators (MRG) Xi=( a1Xi-1+a2Xi-2+….. +akXi-k+b) mod M By choosing k > 1 will increase the time taken to generate each number, but will greatly improve the period and randomness properties of the generator

    31. Lagged Fibonnaci Generators LFGs have become popular recently. The name comes from the Fibonacci sequence : 1, 1, 2, 3, 5, 8, ...…(X n = X n-1 + X n-2). LFGs generate random numbers from the following iterative scheme: X n = X n-i X n-k (mod m), i and k are lags, i >k, and is a binary operation.

    32. Shift Register Generators Shift register (SRG) generators are generally used in a form where they can be considered as a special case of a lagged Fibonacci generator using XOR. XOR gives by far the worst randomness properties of any operation for an LFG, so these generators are not recommended.

    33. Combined Generators Better quality sequences can often be obtained by combining the output of the basic generators to create a new random sequence as : Zn= Xn Yn where is typically either the exclusive-or operator or addition modulo some integer m, and x and y are sequences from two independent generators.

    34. Requirements for Sequential Random Number Generators uniformly distributed uncorrelated never repeats itself satisfy any statistical test for randomness reproduceable portable

    35. Requirements for Sequential Random Number Generators (continue) can be changed by adjusting an initial “seed” value can easily be split into many independent subsequences can be generated rapidly using limited computer memory

    36. Parallel Random Number Generators Many different parallel random number generators have been proposed, but most of them use the same basic concept, which is to parallelize a sequential generator by taking the elements of the sequence of pseudo-random numbers it generates and distributing them among the processors in some way.

    37. The Leapfrog Method Ideally we would like a parallel random number generator to produce the same sequence of random numbers for different numbers of processors. A simple way to achieve this goal is for processor P of an N processor machine to generate the sub-sequence X P , X P+N , X P+2N , …. ,

    38. Sequence Splitting This can be done by splitting the sequence into non-overlapping contiguous sections, each generated by a different processor. X PL , X PL+1 , X PL+2 , …, Generators that apply leapfrog and sequence splitting method

    39. Independent Sequences This method is similar to sequence splitting, in that each processor generates a different, contiguous section of the sequence. However in this case the starting point in the sequence is chosen at random for each processor, rather than computed in advance using a regular increment.

    40. Requirements for Parallel Random Number Generators there should be no inter-processor correlation sequences generated on each processor should satisfy the qualities of serial random number generators it should generate same sequence for different number of processors it should work for any number of processors there should be no data movement between processors

    41. Suggestions on choosing RNGs Never trust a parallel random number generator. In particular, never trust the default random number generator provided with the system you are using. If a generator is shown to fail a certain empirical test, that does not necessarily mean that it will also perform poorly for your application, or the results you spent many months gathering using that generator are now invalid.

    42. Recommendations for sequential RNGS A multiplicative lagged Fibonacci generator with a lag of at least 127, and preferably 1279 or more. A 48-bit or preferably 64-bit linear congruential generator that performs well in the Spectral Test and has a prime modulus. A 32-bit (or more) combined linear congruential generator, with well-chosen parameters. If speed is an issue, use an additive lagged Fibonacci generator with a lag of at least 1279.

    43. Recommendations for parallel RNGs A combined linear congruential generator using sequence splitting; A lagged Fibonacci generator, although great care must be exercised in the initialization procedure, to ensure that the seed tables on each processor are random and uncorrelated.

    44. Test for Randomness

    45. continue

    46. Sample output

    47. Random number generator in Matlab Y = randn(m,n) or Y = randn([m n]) returns an m-by-n matrix of random entries. Y = randn(m,n,p,...) or Y = randn([m n p...]) generates random arrays. Y = randn(size(A)) returns an array of random entries that is the same size as A. randn, by itself, returns a scalar whose value changes each time it's referenced.

    48. Example: x=randn(100,50)

    49. Recommended Random Number Generator Software Combined linear congruential generators with parameters recommended by L'Ecuyer, parallelized using sequence splitting. * RANECU from CERNLIB Lagged Fibonacci generator using ultiplication, parallelized using independent sequences. * FIBMULT from Syracuse University Lagged Fibonacci generator using addition, parallelized using independent sequences. Be sure to use the largest possible lag. *Scalable Parallel Random Number Generator (SPRNG) Library from NCSA *FIBADD from Syracuse University

    50. Online Reference http://www.uni-karlsruhe.de/~RNG/ http://archive.ncsa.uiuc.edu/Apps/CMP/RNG/www-rng.html http://webnz.com/robert/true_rng.html http://www.compapp.dcu.ie/~hruskin/RanNumb.ppt http://wwws.irb.hr/~stipy/random/essay.html http://www.cs.adelaide.edu.au/users/paulc/papers/NHSEre view1.1/PRNGreview.pdf http://www.elec.rdg.ac.uk/staff_postgrads/academic/jbg/teaching/ random.html

    51. continue http://archive.ncsa.uiuc.edu/Apps/SPRNG/www/generators.html http://home.t-online.de/home/p.westphal/zran_eng.htm http://mandala.co.uk/links/random/

    52. Application Chengdong Li

    53. Application of random number in different areas Control/test of gambling machines Creation of lottery numbers Encryption of data (e.g. for communication in the Internet) Generation of code numbers or transaction numbers Digital signatures Direct use for Monte-Carlo simulations or generation of seed numbers Numeric solution of mathematical problems

    54. Topics covered:

    55. Random number and game

    56. Why introduce random into Game? Interest. Simulating some phenomenon in real world Get some unexpected result.Get some unexpected result.

    57. Examples: Computer game

    58. Computer game (cont.)

    59. Example: lottery

    60. Random number and Cryptography "It is impossible to predict the unpredictable." -Don Cherry

    61. What is Cryptography? To most people, cryptography means keeping communications private, however, today’s cryptography is more than this: Encryption Transform data into a form that is virtually impossible to read without the appropriate knowledge (a key). Decryption Transform encrypted data back into an intelligible form (by an algorithm and a key). Digital Authentication Provide assurance that communication is from a particular person. Certification Prove we know certain information without revealing the information Today’s cryptography is more than encryption and decryption. Public key cryptography in particular is also used for digital authentication — providing assurance that communication is from a particular person. Authentication is as fundamental a part of our lives as is privacy. Authentication is used throughout one’s day, especially as we move to a world where decisions and agreements are communicated electronically. Cryptography provides mechanisms for such procedures. A digital signature binds a document to the possessor of a particular key, while a digital time stamp binds a document to its creation at a particular time. These cryptographic mechanisms can be used to control access to a shared disk drive, a high security installation, or a pay-per-view TV channel. The field of cryptography encompasses other uses as well. With just a few basic cryptographic tools, it is possible to build elaborate schemes and protocols that allow us to pay for goods and services using electronic money, prove we know certain information without revealing the information itself and divide and share a secret quantity in such a way that a subset of the shared keys can reconstruct the secret. Today’s cryptography is more than encryption and decryption. Public key cryptography in particular is also used for digital authentication — providing assurance that communication is from a particular person. Authentication is as fundamental a part of our lives as is privacy. Authentication is used throughout one’s day, especially as we move to a world where decisions and agreements are communicated electronically. Cryptography provides mechanisms for such procedures. A digital signature binds a document to the possessor of a particular key, while a digital time stamp binds a document to its creation at a particular time. These cryptographic mechanisms can be used to control access to a shared disk drive, a high security installation, or a pay-per-view TV channel. The field of cryptography encompasses other uses as well. With just a few basic cryptographic tools, it is possible to build elaborate schemes and protocols that allow us to pay for goods and services using electronic money, prove we know certain information without revealing the information itself and divide and share a secret quantity in such a way that a subset of the shared keys can reconstruct the secret.

    62. The application of cryptography Build secure protocol and scheme. Provide basic tools for higher application. While e-business has allowed companies to streamline processes and controls and achieve higher customer satisfaction and increased revenues, it’s also caused great concern over the protection of company assets. needed in interactive software applications. The world’s most successful software companies have selected RSA Security precisely because they trust us to provide them with the most advanced security While e-business has allowed companies to streamline processes and controls and achieve higher customer satisfaction and increased revenues, it’s also caused great concern over the protection of company assets. needed in interactive software applications. The world’s most successful software companies have selected RSA Security precisely because they trust us to provide them with the most advanced security

    63. Example: While e-business has allowed companies to streamline processes and controls and achieve higher customer satisfaction and increased revenues, it’s also caused great concern over the protection of company assets. needed in interactive software applications. The world’s most successful software companies have selected RSA Security precisely because they trust us to provide them with the most advanced security While e-business has allowed companies to streamline processes and controls and achieve higher customer satisfaction and increased revenues, it’s also caused great concern over the protection of company assets. needed in interactive software applications. The world’s most successful software companies have selected RSA Security precisely because they trust us to provide them with the most advanced security

    64. Example (cont.)

    65. Random source in Cryptography Almost all cryptographic protocols require the generation and use of secret values that must be unknown to attackers. Random number generator (RNG) is required. For example RNGs are required to generate public/private key pairs for asymmetric (public key) algorithms including RSA, DSA, and Diffie-Hellman. Keys for symmetric and hybrid cryptosystems are also generated randomly. RNGs are also used to create challenges, nonces (salts), padding bytes, and blinding values. The one time pad – the only provably-secure encryption system – uses as much key material as cipher-text and requires that the key-stream be generated from a truly random process. encryption of a counter with a true-random key a strong encryption algorithm, using a true-random key a cryptographically strong hash function (such as MD5 or SHA) computed over a true-random seed signature of a unique value Two main purpose of using random source: Generating password Generating session key Binding of value in certain protocol (to make unique) encryption of a counter with a true-random key a strong encryption algorithm, using a true-random key a cryptographically strong hash function (such as MD5 or SHA) computed over a true-random seed signature of a unique value Two main purpose of using random source: Generating password Generating session key Binding of value in certain protocol (to make unique)

    66. A product example:

    67. Why use random? Secure systems today are built on strong cryptographic algorithms that foil pattern analysis attempts. The security of these systems is dependent on generating secret quantities for passwords, cryptographic keys, and similar quantities. The use of random techniques to generate secret quantities can foil the attacker efficiently. What one needs for cryptography is values which can not be guessed by an adversary any more easily than by trying all possibilities What one needs for cryptography is values which can not be guessed by an adversary any more easily than by trying all possibilities

    68. Desired requirement for random Because security protocols rely on the unpredictability of the keys they use, random number generators for cryptographic applications must meet stringent requirements. The most important is that attackers, including those who know the RNG design, must not be able to make any useful predictions about the RNG outputs. How the intruder attacks: By trial and error (brute force) Possible as long as the key is enough smaller than the message that the correct key can be uniquely identified. Criterion: Any adversary with: full knowledge of your software and hardware the money to build a matching computer and run tests with it the ability to plant bugs in your site must not know anything about the bits you are to use next even if he knows all the bits you have used so far. The probability of an adversary succeeding at this must be made acceptably low.How the intruder attacks: By trial and error (brute force) Possible as long as the key is enough smaller than the message that the correct key can be uniquely identified. Criterion: Any adversary with: full knowledge of your software and hardware the money to build a matching computer and run tests with it the ability to plant bugs in your site must not know anything about the bits you are to use next even if he knows all the bits you have used so far. The probability of an adversary succeeding at this must be made acceptably low.

    69. Mathematical view The entropy of the RNG output should be as close as possible to the bit length. Entropy: According to Shannon, the entropy H of any message or state is: Where Pi is the probability of state i out of n possible states and K is an optional constant to provide units (e.g. 1/log(2) bit). In the case of a RNG that produces a k-bit binary result, Pi is the probability that an output will equal i, where 0?i<2k. Because security protocols rely on the unpredictability of the keys they use, random number generators for cryptographic applications must meet stringent requirements. The most important is that attackers, including those who know the RNG design, must not be able to make any useful predictions about the RNG outputs. In particular, the apparent entropy of the RNG output should be as close as possible to the bit length. RNG. For this review, we analyze whether there is any feasible way to distinguish the Intel RNG from a perfect RNG. 2. Pseudorandomness Most “random” number sources actually utilize a pseudorandom generator (PRNG). PRNGs use deterministic processes to generateBecause security protocols rely on the unpredictability of the keys they use, random number generators for cryptographic applications must meet stringent requirements. The most important is that attackers, including those who know the RNG design, must not be able to make any useful predictions about the RNG outputs. In particular, the apparent entropy of the RNG output should be as close as possible to the bit length. RNG. For this review, we analyze whether there is any feasible way to distinguish the Intel RNG from a perfect RNG. 2. Pseudorandomness Most “random” number sources actually utilize a pseudorandom generator (PRNG). PRNGs use deterministic processes to generate

    70. Mathematical view (cont.) For a perfect RNG, Pi =2-n and the entropy of the output is equal to K bits. This means that all possible outcomes are equally likely, and on average the information can not be represented in a sequence shorter than K bits. In contrast, the entropy of typical English alphabetic text is 1.5 bits per character. This is because there is much more correlation between the different bits in commonly used words, and the the words in the text.

    71. Type of Random source Two type: true-random unconditionally unguessable, even by an adversary with infinite computing resources pseudo-random good only against computationally limited adversaries Probably the most commonly encountered randomness requirement today is the user password. This is usually a simple character string. Obviously, if a password can be guessed, it does not provide security. Many other requirements come from the cryptographic arena. Cryptographic techniques can be used to provide a variety of services including confidentiality and authentication. Such services are based on quantities, traditionally called "keys", that are unknown to and unguessable by an adversary. Probably the most commonly encountered randomness requirement today is the user password. This is usually a simple character string. Obviously, if a password can be guessed, it does not provide security. Many other requirements come from the cryptographic arena. Cryptographic techniques can be used to provide a variety of services including confidentiality and authentication. Such services are based on quantities, traditionally called "keys", that are unknown to and unguessable by an adversary.

    72. The requirement from different algorithm The frequency and volume of require for random is different: RSA Required when key pair is generated, Thereafter, any number of messages can be signed without any further need for randomness. DSA Requires good random numbers for each signature . One time pad Requires a volume of randomness equal to all the messages to be processed. Probably the most commonly encountered randomness requirement today is the user password. This is usually a simple character string. Obviously, if a password can be guessed, it does not provide security. Many other requirements come from the cryptographic arena. Cryptographic techniques can be used to provide a variety of services including confidentiality and authentication. Such services are based on quantities, traditionally called "keys", that are unknown to and unguessable by an adversary. Probably the most commonly encountered randomness requirement today is the user password. This is usually a simple character string. Obviously, if a password can be guessed, it does not provide security. Many other requirements come from the cryptographic arena. Cryptographic techniques can be used to provide a variety of services including confidentiality and authentication. Such services are based on quantities, traditionally called "keys", that are unknown to and unguessable by an adversary.

    73. RSA

    74. DSA:

    75. One time pad:

    76. Authentication

    77. How to generate randomness? Hardware used to generate truly randomness: Sound/video input Disk drive Mouse event. Quantum effects in a semiconductor Unplugged microphone air turbulence within a sealed disk drive timing between keystrokes Probably the most commonly encountered randomness requirement today is the user password. This is usually a simple character string. Obviously, if a password can be guessed, it does not provide security. Many other requirements come from the cryptographic arena. Cryptographic techniques can be used to provide a variety of services including confidentiality and authentication. Such services are based on quantities, traditionally called "keys", that are unknown to and unguessable by an adversary. Cryptographic systems need cryptographically strong (pseudo) random numbers that cannot be guessed by an attacker. Random numbers are typically used to generate session keys, and their quality is critical for the quality of the resulting systems. The random number generator is easily overlooked, and can easily become the weakest point of the cryptosystem Probably the most commonly encountered randomness requirement today is the user password. This is usually a simple character string. Obviously, if a password can be guessed, it does not provide security. Many other requirements come from the cryptographic arena. Cryptographic techniques can be used to provide a variety of services including confidentiality and authentication. Such services are based on quantities, traditionally called "keys", that are unknown to and unguessable by an adversary. Cryptographic systems need cryptographically strong (pseudo) random numbers that cannot be guessed by an attacker. Random numbers are typically used to generate session keys, and their quality is critical for the quality of the resulting systems. The random number generator is easily overlooked, and can easily become the weakest point of the cryptosystem

    78. How to generate randomness? Non-hardware strategy: Mixing functions One which combines two or more inputs and produces an output where each output bit is a different complex non-linear function of all the input bits. DES use strong mixing functions.

    79. Example of mixer SHA-1 is an effective mixer because it combines variable size inputs to generate independent output bits with excellent statistical distributions. The cryptographic properties of SHA destroy any remaining statistical structure and make it computationally infeasible to recover the seed state.SHA-1 is an effective mixer because it combines variable size inputs to generate independent output bits with excellent statistical distributions. The cryptographic properties of SHA destroy any remaining statistical structure and make it computationally infeasible to recover the seed state.

    80. Difference of two strategy: Hardware generation is based on a physical process. The advantages are obvious: No periodicities. Not based on an algorithm. No predictability of random numbers based on knowledge of preceding sequences. No hidden correlations are present. The equipartition fluctuations are purely stochastic. (Pseudo-random numbers contain systematic, unnatural fluctuations in the equipartition.)

    81. Conclusion: Generation of unguessable "random" secret quantities for security use is an essential but difficult task. hardware techniques to produce such randomness would be relatively simple In the absence of hardware sources of randomness, a variety of user and software sources can frequently be used instead with care. Probably the most commonly encountered randomness requirement today is the user password. This is usually a simple character string. Obviously, if a password can be guessed, it does not provide security. Many other requirements come from the cryptographic arena. Cryptographic techniques can be used to provide a variety of services including confidentiality and authentication. Such services are based on quantities, traditionally called "keys", that are unknown to and unguessable by an adversary. Probably the most commonly encountered randomness requirement today is the user password. This is usually a simple character string. Obviously, if a password can be guessed, it does not provide security. Many other requirements come from the cryptographic arena. Cryptographic techniques can be used to provide a variety of services including confidentiality and authentication. Such services are based on quantities, traditionally called "keys", that are unknown to and unguessable by an adversary.

    82. Random number in scientific research Probably the most commonly encountered randomness requirement today is the user password. This is usually a simple character string. Obviously, if a password can be guessed, it does not provide security. Many other requirements come from the cryptographic arena. Cryptographic techniques can be used to provide a variety of services including confidentiality and authentication. Such services are based on quantities, traditionally called "keys", that are unknown to and unguessable by an adversary. Probably the most commonly encountered randomness requirement today is the user password. This is usually a simple character string. Obviously, if a password can be guessed, it does not provide security. Many other requirements come from the cryptographic arena. Cryptographic techniques can be used to provide a variety of services including confidentiality and authentication. Such services are based on quantities, traditionally called "keys", that are unknown to and unguessable by an adversary.

    83. Example of randomness required For scientific experiments, it is convenient that a series of random numbers can be replayed for use in several experiments, and pseudo-random numbers are well suited for this purpose . Most random number generators produce what is known as “white” noise. Here white means the successive values of the random numbers are not correlated with each other. It has a very “rich” frequency. Probably the most commonly encountered randomness requirement today is the user password. This is usually a simple character string. Obviously, if a password can be guessed, it does not provide security. Many other requirements come from the cryptographic arena. Cryptographic techniques can be used to provide a variety of services including confidentiality and authentication. Such services are based on quantities, traditionally called "keys", that are unknown to and unguessable by an adversary. Probably the most commonly encountered randomness requirement today is the user password. This is usually a simple character string. Obviously, if a password can be guessed, it does not provide security. Many other requirements come from the cryptographic arena. Cryptographic techniques can be used to provide a variety of services including confidentiality and authentication. Such services are based on quantities, traditionally called "keys", that are unknown to and unguessable by an adversary.

    84. Application

    85. White noise and its usage Feature: All frequency. Usage: DSP and filter System identification Simulation. Spectra analysis.

    86. Useful links: http://world.std.com/~cme/P1363/ranno.html http://www.faqs.org/faqs/cryptography-faq/part04/ http://www.mathworks.com/access/helpdesk/help/toolbox/ident/ch3tut63.shtml http://www.rsasecurity.com/products/bsafe/wtlsc.html http://www.random.org/ http://crypto.mat.sbg.ac.at/generators/ http://www.faqs.org/faqs/cryptography-faq/part08/ http://www.cryptography.com/resources/whitepapers/IntelRNG.pdf http://www.geocities.com/SiliconValley/Code/4704/#Randomness

More Related