MathGroup Archive 2006

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

Search the Archive

Re: Faster Random Walk Simulation ?!?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg66197] Re: Faster Random Walk Simulation ?!?
  • From: dh <dh at metrohm.ch>
  • Date: Thu, 4 May 2006 05:19:38 -0400 (EDT)
  • References: <e39k1n$cmn$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com


Hi Mario,

Append and loops are notoriously slow.

To avoid them, you may first create a table:

t = Table[If[Random[] > value, 1, -1], {10000}];

then do the addition:

t = FoldList[Plus, 0, t]



Daniel



mfific at gmail.com wrote:

> Dear All,

> I am running a simulation with Mathematica 5 that includes random walk

> described below. The argument boundaryA is upper and lower boundary for

> a random walk. Parameter "value" is just a constant arbitrarily set to

> 0.5. The output of the table function is the 10000 random walks, and

> their path to either +5 or -5 boundary value.

> While everything works as expected, it takes considerable duration of

> time. For example it takes 2.6 seconds to generate the table output, on

> a relatively fast computer.

> 

> I would very appreciate if any significantly faster solution could be

> suggested.

> 

> 

> value = .5

> 

> 

> RandomWalk[boundaryA_] := Block[{l = {{0, 0}}, x = 0,

>   i = 0 }, While[boundaryA > x > -boundaryA,

>        x += If[Random[] > value, 1, -1];

>       l = Append[l, {++i, x}]];

>     l]

> 

> Timing[Table[RandomWalk[5], {i, 1, 10000}];]

> 

> Out[420]=

> {2.672 Second, Null}

> 

> 

> Thank you very much,

> 

> Mario Fific

> 

> 

> Mario Fific

> Cognitive Psychology, Cognitive Science

> Indiana University

> 1101 E. 10th St.

> Bloomington, IN  47405-7007

> 



  • Prev by Date: Re: Faster Random Walk Simulation ?!?
  • Next by Date: Re: Beginner--Help on using FindRoot to solve the system of equations
  • Previous by thread: Re: Faster Random Walk Simulation ?!?
  • Next by thread: Re: Faster Random Walk Simulation ?!?