MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Using a huge list of random numbers from random.org

  • To: mathgroup at smc.vnet.net
  • Subject: [mg128351] Re: Using a huge list of random numbers from random.org
  • From: jarek at miszczak.eu
  • Date: Tue, 9 Oct 2012 00:37:27 -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> <k0nht1$b39$1@smc.vnet.net>

On Saturday, August 18, 2012 9:57:21 AM UTC+2, Roland Franzius wrote:
> Am 17.08.2012 09:44, schrieb kbru157:
>
> > 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

I was wondering if it is possible to read some fixed number of bits (eg. 5) from the file with random data. I tried to use Import with "Bit" specification for this purpose, but this seams to be very slow. Are there any other methods to read from file bit-by-bit?

Best,

Jarek Miszczak



  • Prev by Date: Re: Assuming and Integrate
  • Next by Date: Triggering on exception conditions
  • Previous by thread: Re: Suppress Resizing in Manipulate[expr].
  • Next by thread: Triggering on exception conditions