Re: Using a huge list of random numbers from random.org
- To: mathgroup at smc.vnet.net
- Subject: [mg127744] Re: Using a huge list of random numbers from random.org
- From: Roland Franzius <roland.franzius at uos.de>
- Date: Sat, 18 Aug 2012 03:44:43 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-newout@smc.vnet.net
- Delivered-to: mathgroup-newsend@smc.vnet.net
- References: <k0ksoc$66d$1@smc.vnet.net>
Am 17.08.2012 09:44, schrieb kbru157 at gmail.com: > I am doing some simulation which requires the use of random numbers. I do not want to use pseudo-random numbers. Instead I intend to download some of the binary files from random.org > http://www.random.org/files/ > How do I use these digits within mathematica 8.0? (Subsidiary question: How would one convert these binary digits into deimal fractions?) > To use these 0-1 Random Digits directly makes sense only in the creation process of a Random Number Generator. For instance, you can add a large number N of a*(0-1 Digits) -1 + b in order to obtain a normal distribution with mean b and variance ~ N a. Download eg. the 2012-07-22.txt file into your user directory and open it in Mathematica as an input stream Close[ips] ips = OpenRead["C:\\Users\\MeTheUser\\Downloads\\2012-07-22.txt"] Now you can start making experiments. The following examples interpret the stream as integers of fixed lenght 64bit with 50:50 distribution of binary digits. 0 and 1 are ASCII coded as characters by charcter code 48 and 49. input = FromDigits[#, 2] & /@ Flatten /@ Partition[ReadList[ips, {Byte}, 1024], 64]; The -1,1- random generator is implemented as choose[n_]:= 2*(Flatten@ReadList[ips, {Byte}, n] - 48-1/2); From this you can construct an Gaussian generator by gauss[n_]:= Plus@@choose[n] A (0,1)-uniform generator is uniform[n_] := N[Table[2^(-k), {k, 1, n}].Flatten[ReadList[ips, {Byte}, n]] - 48] Here effectively each 0-1 is used to decide, if the resulting number goes to the left or right half of the next 2^-n subdivison intervall on (0,1) (1/2,1) (1/2,3/4) ... . Using the uniform generator you can easily implement each distribution with cumulative distribution function F: F(x) = Prob[ Variable <x ] by random:= InverseFunction[F][uniform[64]] But be careful using a binary digits fixed length generator: It has a fixed lattice structure. Your problem should be insensitive to that length scale. But you can use another random generator in order to decide the length of the binary digit string to use. -- Roland Franzius