MathGroup Archive 2007

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

Search the Archive

Re: generating non-IID random sequences

  • To: mathgroup at smc.vnet.net
  • Subject: [mg79123] Re: generating non-IID random sequences
  • From: Peter Pein <petsie at dordos.net>
  • Date: Thu, 19 Jul 2007 03:29:58 -0400 (EDT)
  • References: <f7kegd$58u$1@smc.vnet.net>

Yaroslav Bulatov schrieb:
> I'm looking for a fast way to sample from a Markov-1 sequence of
> random bits. The method below is 3600 times slower than built-in
> RandomInteger function, can it be made much faster?
> 
> p = 0.9; (* the probability of encountering 00 or 11 *)
> f = RandomChoice[{p^# (1 - p)^(1 - #), p^(1 - #) (1 - p)^#} -> {1, 0}]
> &;
> NestList[f, RandomChoice[{0, 1}], 100000]
> 
> 

Hi Yaroslav,

isn't this formula a bit too complicated to be used in a fast generator?

Just return the same bit as the last with probability p:

SeedRandom[1];
Timing[With[{p=0.9},
  rlist=NestList[If[Random[]<=p,#,1-#]&,Random[Integer],10^6];]][[1]]

Count[Partition[rlist,2,1],{x_,x_},{1}]/Length[rlist]//N
Out[32]=
0.300019 Second
Out[33]=
0.899887
, which is pretty near 0.9 :-)

Peter


  • Prev by Date: Re: UnTableForming a TableFormed Table?
  • Next by Date: Re: fast way of appending x zeros to a list?
  • Previous by thread: Re: generating non-IID random sequences
  • Next by thread: Re: generating non-IID random sequences